pandas
数据结构
Series 一维序列,是个定长的字段序列,两个基本属性 index和value
DataFrame 二维的表,行索引+列索引
数据输入和数据输出
import pandas as pd sales = pd.read_excel(file_path,converters={'社保卡号':str,'商品编码':str}) data=pd.DataFrame({'Chinese':[66,95,93,90,80],'English':[65,85,92,88,90],'math':[30,98,96,77,90]}, index=['ZhangFei','GuanYu','ZhaoYun','HuangZhong','DianWei'])
data.to_excel('/Users/gaominghui/Downloads/aa.xlsx') print(data)
数据清洗
1 删除 行 或列
data.drop(columns='math')
data = data.drop(index='DianWei')
2 重命名
rename(columns=new_names, inplace=True)
3去重复的值
data = data.drop_duplicates() 去除重复的行
data = data.drop_duplicates(['bb'])
4 更改数据格式
data['bb']=data['bb'].astype('str') #np.int64
5 拆分列
df1 = pd.DataFrame({'ni':['a a',' b','c ']}) print(df1) df1['ni']= df1['ni'].str.split(' ') print(df1)
去除空格?
6 大小写转换
#大写 upper,小写 lower(), 首字母大写 title()
df1.columns = df1.columns.str.upper() df1['NI'] = df1['NI'].str.upper() print(df1)
7 查找空值. df1.isnull()
8 使用apply函数
apply函数是Pandas中自由度非常高的函数,使用频率也非常高
df1['ni']=df1['ni'].apply(str.upper)#不能有none值
9 数据表合并
merge()
d1 = pd.DataFrame({'name':['ZhangFei','GuanYu','a','b','c'], 'data1':range(5)}) d2 = pd.DataFrame({'name':['ZhangFei','GuanYu','A','B','C'], 'data1':range(5)}) d3 = pd.merge(d1,d2,on='name') #基于列连接 d3 = pd.merge(d1,d2, how='inner') #默认连接方式,键的交集 d3 = pd.merge(d1,d2, how='left') d3 = pd.merge(d1,d2, how='right') d3 = pd.merge(d1,d2, how='outer') #默认连接方式,键的并集
数据统计
统计函数
count(),describe(), min(), max(), sum(),mean(),median(), var(), std(), argmin()统计最小值的索引位置, argmax(), idxmin() 统计最小值的索引值,idxmax()
pandasql 用sql方式打开pandas
import pandas as pd from pandasql import sqldf, load_meat,load_births df1 = pd.DataFrame({'name':['ZhangFei','GuanYu','a','b','c'], 'data1':range(5)}) print(df1) pysqldf = lambda sql: sqldf(sql,globals()) print(pysqldf) sql = 'select * from df1 where name="ZhangFei"' print(pysqldf(sql))
lambda 匿名函数,具体形式 lambda argument_list: expression. 参数列表:参数表达式