其他分享
首页 > 其他分享> > 入门pandas—筛选

入门pandas—筛选

作者:互联网

加载数据

标明一下sheet_name

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
print(data)
     姓名 性别       出生日期  语文  数学  英语   总分               地址
序号                                                     
1   卢海军  男 1983-01-05  64  49  49  162     上海市某某区某某小区A座
2   丁智敏  女 1983-10-27  61  61  60  182     冀州市某某区某某小区a座
3   李平平  女 1994-01-07  58  49  33  140     襄阳市某某区某某小区c座
4    张伊  女 1987-02-06  69  44  58  171  河南省信阳市某某区某某小区C座
5    王刚  男 1989-07-08  37  63  42  142     信阳市某某区某某小区B座
6    王松  男 1987-03-06  47  44  62  153     襄阳市某某区某某小区F座

按位置筛选,筛选第2行至第4行数据

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
data2 = data.loc[2:4]
print(data2)
     姓名 性别       出生日期  语文  数学  英语   总分               地址
序号                                                     
2   丁智敏  女 1983-10-27  61  61  60  182     冀州市某某区某某小区a座
3   李平平  女 1994-01-07  58  49  33  140     襄阳市某某区某某小区c座
4    张伊  女 1987-02-06  69  44  58  171  河南省信阳市某某区某某小区C座

按值过滤,筛选所有男性

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
i = data['性别']=='男'   #i是条件
print(data[i])   #数据[条件]
     姓名 性别       出生日期  语文  数学  英语   总分            地址
序号                                                  
1   卢海军  男 1983-01-05  64  49  49  162  上海市某某区某某小区A座
5    王刚  男 1989-07-08  37  63  42  142  信阳市某某区某某小区B座
6    王松  男 1987-03-06  47  44  62  153  襄阳市某某区某某小区F座

多条件筛选,男性和总分大于等于150

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
i = "性别=='男' and 总分>=150"         #i是条件 query可以识别出字符串和and
print(data.query(i))   #数据.query(条件)
     姓名 性别       出生日期  语文  数学  英语   总分            地址
序号                                                  
1   卢海军  男 1983-01-05  64  49  49  162  上海市某某区某某小区A座
6    王松  男 1987-03-06  47  44  62  153  襄阳市某某区某某小区F座

query 方法,可以直接接受一个查询字符串,是不是很像 Sql 呢.指定多个值也很简单,使用in 或not in,如下:

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
i="姓名 in ['王松','王刚']"
print(data.query(i))
    姓名 性别       出生日期  语文  数学  英语   总分            地址
序号                                                 
5   王刚  男 1989-07-08  37  63  42  142  信阳市某某区某某小区B座
6   王松  男 1987-03-06  47  44  62  153  襄阳市某某区某某小区F座

文本筛选:开头与结尾

格式:str.startswith( ) /endwith( )

例:姓名列开头姓王的

i = data['姓名'].str.startswith('王')   #注意加上str.
print(data[i])

文本筛选:包含

格式:str.contains() 是否包含查找的字符串

例1:筛选地址包含信阳市

i = data['地址'].str.contains('信阳市')
print(data[i])

例2:筛选地址包含A-C座(不区分大小写)

i = data['地址'].str.contains('[a-c]座',case=False) #case=False 是不区分大小写
print(data[i])

或者

i = data['地址'].str.contains('[a-cA-C]座') 
print(data[i])

筛选值范围

例1:语文分数在60至100之间的女性

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',sheet_name='Sheet1')
i = '性别 == "女" and 60<=语文<=100'
print(data.query(i))

筛选日期

获取某年某月数据

1.将出生日期列设置成索引
2.将出生日期列转成日期格式

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='出生日期',parse_dates=['出生日期']) #将出生日期列设置成索引 将出生日期列转成日期格式

print(data['1989'].head())
print(data['1983-10'].head())

获取某个时期之前或之后的数据

1.将出生日期列设置成索引
2.将出生日期列转成日期格式
3.将出生日期进行排序

import pandas as pd
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='出生日期',parse_dates=['出生日期']) #将出生日期列设置成索引 将出生日期列转成日期格式

data2=data.sort_values('出生日期')  #将出生日期进行排序
print(data2)

获取1980年以后的数据

print(数据2.truncate(before='1980').head())

获取1990-12之前的数据

print(数据2.truncate(after='1990-12').head())

获取1990-02年以后的数据

print(数据2.truncate(before='1990-02').head())

获取1984-01-01年以后的数据

print(数据2.truncate(before='1984-01-1').head())

获取指定时间区间

print(数据2['1983':'1990'])
print(数据2['1983-01-1':'1990-12-31'])

多条件日期范围

1.不要将出生日期列设置成索引
2.将出生日期列转成日期格式

import pandas as pd
import datetime as dt
path = 'C:/Users/Administrator/Desktop/playground2/筛选.xlsx'
data = pd.read_excel(path,index_col='序号',parse_dates=['出生日期']) # 将出生日期列转成日期格式

i = ('@data.出生日期.dt.year>1980 and'      
     '@data.出生日期.dt.year<1990'                                     
       'and 性别=="男"')
# @data.出生日期相当于一个语法糖,dt.year取出生日期的年份,同类型的条件and写在上一个条件的末端,否则写在条件前端
print(data.query(i))

标签:某某,入门,pd,path,print,出生日期,筛选,data,pandas
来源: https://blog.csdn.net/weixin_51758140/article/details/113406785