数据分析中我们进行数据清洗,常用的工具为pandas库,本文为个人整理的pandas常用函数,希望对您学习pandas有帮助。
一、生成数据表
导入应用模块:
import pandas as pd
Import numpy as np #numpy 通常搭配使用
(一)创建数据表
①df=pd.DataFrame() #创建多维列表
②df=pd.Series() #创建单行或单列数组
(二)读取数据表
① excel:df=pd.read_excel('文件路径+文件名.xlsx') #编码错误则在文件路径前加r防转译(注意考虑:无表头的情况,默认第一行,否则设置表头)
②CSV:df=pd.read_csv('文件路径+文件名.csv') #同上
③sql: import pymysql
连接对象 = pymysql.connect(host = 'localhost',user = 'root',password = '1234',database = 'test',charset = 'utf8')
读取文件 = pd.read_sql("select * from 1班",con=连接对象)
二、数据表检查
(一)列表基本信息查看
①df.shape #查看列表行列数
②df.info() #查看列表整体信息,包括数据维度、数据格式、所占空间
③df.dtypes #查看各列数据格式
(二)列表数值查看
①df.isnull() #查看空值(np.any(df.isnuul())列表是否含有空值
②df['A'].unique() #查看唯一值
③df.values #查看列表数值
④df.columns #查看列表的列名称
⑤df.index #查看列表索引
(三)查看列表前/后行
①df.head(n) #查看数据的前N行
②df.tail(n) #查看数据的后N行
三、数据表清洗
(一)空值处理
①删除:df.dropna(how='any'/'all') #删除含有任意空值/全为空值的行或列(注意:行或列区分条件,axis=0为行/axis=1为列)
②填充:df.fillna(value=n) #指定数值N进行填充或用其他列的均值等填充df.fillna(df['A'].mean()) ,填充方式前值填充ffill,后值填充bfill
注意:表示空值用np.nan
(二)重复值处理
①删除:df.drop_duplicates() #默认删除后出现重复值,设置keep='last' 则保留后面,删除先出现的值
②替换:df.replace('A','B') #把A替换为B
(三)其他值处理
①清除空格:df['A']=df.['A'].map(str.strip) #字符中空格去除清洗
②大小写转换:df['A']=df['A'].str.lower()/upper() #字符大小写转换,注意掌握字符串部分其他函数
(四)更改数据格式
df['A'].astypes() #修改某列的数据类型,注意掌握pandas中的数据类型(如:整型int、浮点型float、文字型object、日期类型)
(五)更改列名称
df.rename(columns={'A':'B',inplace=True) #将A列改名为B
四、数据预处理
(一)数据表合并
①merge()函数:merge(df1,df2,how='inner/outer/left/right',on='key')#合并方式'how'有4种,on为连接条件
②concat()函数:concat([df1,df2],ingore_idex=True) #同过设置轴AXIS=0/1确定行/列合并,ingore_index确定是否忽略索引
③append()函数:df.append(df1,ingore_index=True) #直接在行末尾追加行
(二)排序
①设置索引列:df.set_index() / df.reset_index #前者为设置索引,后者为恢复默认索引
②按索引排序:df.sort_index() #利用ascending=False 进行降序,默认升序排列
③按数值排序:df.sort_values(by=['A'],ascending=True) #按指定列数值进行升序排列
(三)数据分组
Where()函数:df['level']=np.where(df['A']>10,'A','B') #如果A列的值>10,则level列显示A否则显示B
(四)数据分列
Split()函数:df=pd.DataFrame((x.split('-') for x in df['A'],index=df.index,columns=['a','b']) #把A列按'-'符号,拆分为a列和b列
五、数据提取
(一)按标签提取
①提取单行数值:df.loc['a',:] #提取a行的数值,可省略后列标签,默认提取对应行的所有列
②提取区域行数值:df.loc['a':'c',:] #提取a行到c行的数值
(二)按位置提取
①区域提取数据:df.iloc[:3,:2] #提取前3行前2列的区域数据
②单独提取数据: df.iloc[[ 0,2,5],[4,5] ] #提取第0,2,5行的数据,以及第4,5列对应数据
(三)按标签和位置提取
Ix()函数:df.ix('A',2) #ix是loc和iloc的混合,既按标签也按位置进行数据提取
(四)按条件提取
Df.loc[df['A'].isin(['A','a'])] #判断A列中是否包含A,a ,如包含就把这条数据提取出来
六、数据筛选
与 &:df.loc[(df['age']>20)&(df['sex']=='女')] #判断age>20并且性别为女
或|:df.loc[(df['age']>20)|(df['sex']=='女')] #判断age>20或者性别为女
非!=:df.loc[df['age']!=20] #判断年龄不等于20的
注意:筛选后的数据计算,df.loc[df['age']>20].count()
七、数据汇总
(一)分类汇总
①按列汇总:df.groupby('city').count() #按city列进行分类并计数
②按两个字段汇总:df.groupby(['country','city'])[id].count() #按country、city进行分类计算id列对应数值
③汇总数据多维度计算:df.groupby('city')[id].agg(sum,np.mean) #多维度计算分类后的相应数值
(二)数据透视
Pivot_table()函数:pd.pivot_table(df.index=['city'],columns=['size'],values=['price'],aggfunc=[np.sum]) #设置行列,计算数值,计算方式
八、数据统计
(一)数据采样
①sample()函数:df.sample(n=3,replace=True) #由参数n确定采样数量,replace=True 采样放回,False 采样不放回
②weights参数:weights=[0,0.5,0.5] df.sample(n=2,weights=weights) #设置采样的权重,更改采样的结果
(二)描述统计
Describe()函数:df.describe() #对列表数据进行描述性统计
(三)相关分析
Corr()函数:df['A'].corr(df['B']) #计算A列与B列的相关性分析
九、数据输出
(一)输出excel
Df.to_excel('文件路径\文件名.xlsx')
(二)输出csv
Df.to_csv('文件路径\文件名.csv')
(三)输出sql
df.to_sql(文件名,连接对象)