Pandas 常用函数整理

#文件地址
file='a.xlsx'  #文件
#引入包
import pandas as pd

1、读写文件

#读取
data=pd.read_excel(file,sheet_name='sheetname') #读取excel
data=pd.read_csv(file,sheet_name='sheetname') #读取csv

#写入excel
writer=pd.ExcelWriter(file) #适合写入多个sheet的时候,在to_excel里指定写入的sheet_name
data.to_excel(writer,sheet_name='sheetname,index=None) 
#index=None 表示将会以数据本来的样子写入
writer.save()

2、查看基础信息

data.head(n)  #查看前n行,n可以不填,默认读取前5行
data.tail(n)  #倒序查看n行,n可以不填,默认读取前5行
data.describe()  #概要与描述性统计,包含计数,均值,标准差,最大值和最小值
data.columns.values #列索引组成的ndarray类型
data.index.values #行索引组成的ndarray类型
data.shape #返回行,列数

3、对特殊值做处理

#丢弃缺失列
data.dropna()  #丢弃有缺失的数据
data.dropna(how='all') #只丢弃全为缺失值的那些行
data.dropna(axis=1,how="all")  #丢弃全为缺失值的那些列
data.dropna(axis=1)   #丢弃有缺失值的列
data.dropna(axis=0,subset = ["col"])   # 丢弃col列中有缺失值的行
data.dropna(subset=['col'])  #丢弃col列有缺失值的行

#填充缺失列
data.fillna(n)  #使用常数n填充加 inplace=True 直接修改原data
data.fillna({0:x,1:y,2:z})  #使用字典填充
data.fillna(method='ffill') #用前面的值来填充
data.fillna(method='bfill',limit=2) #使用后面的值来填充,limit限制个数
data.fillna(method="ffill",axis=1) #axis=” “修改填充方向

#格式转化
pd.to_numeric(data, errors='ignore') #转为数值,遇到不能转的就忽略
#备注 errors='coerce',可以将无效值强制转换为NaN
data=pd.read_csv(file,dtype={'col':str}) #读取的时候就指定列转化
pd.to_datetime() #转化为时间
pd.to_timedelta() #转化为时间戳
data[['c1','c2']] = data[['c1','c2']].apply(pd.to_numeric)#多行转换

4、读取行,列,元素

#读取单行单列
data.loc[n]  #读取第n行
data['col'] #读取name=col的列
data.iloc[1] # 读取第n行
data.iloc[:,1] #读取第1列
#.iloc使用全是以0开头的行号和列号,不能直接用其它索引哦。而.loc使用的实际设置的索引和列名
#.iloc只能选取数据表里实际有的行和列,而.loc可以选取没有的行和列,赋值后就可以添加新行或者列。

#读取元素
data.loc[n]['col']  #第n-1行,col列
data.iloc[n](m]     #第n-1行,m-1列

#读取多行多列
data.loc[[m,n]] #第m,n行
data[['col1','col2']] #第col1,col2列
data[m:n] #从第m行到第n行,加values返回ndarry类型
#遍历
for i in data.values: #遍历每一行
    i[col_num] #取每一行的col_num列
for i in data['col']: #遍历col列,取i


5、增加修改

#增加一列(eg:增加两列相除)
data['col_new']=data['col1']/data['col2'] 
data.eval('col_new=col1/col2',inplace=True)
data['col_new']=data.apply(lambda x:x['col1']/x['col2'],axis=1)
data['col_new']=data.apply(lambda x:x[1]/x[2],axis=1)

#修改列名
data.columns = ["new_name1", "new_name2"]#直接在原数据上修改
data.rename(columns={"old_name":"new_name"}, replace=True)#在原表上修改
data.insert(0, 'new_name', data.pop('old_name'))#先删除再插入,并且重新命名


6、统计

#对一列去重统计多少个
data.groupby(['col']).col.nunique()

#统计一列每个元素出现了多少次,去重有多少个
data['col'].value_counts()

#按照某列,取最大的n个值的行
data.nlargest(n,'col')

#按照某列对整个dataframe排序(True表示升序,False表示降序)
data.sort('col',ascending=true)

7、高级部分

#相关性计算
data.corr(method='Pearson'min_periods=n)
参数说明:
method:可选值为{‘pearson’, ‘kendall’, ‘spearman’}
pearson:Pearson相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
spearman:非线性的,非正太分析的数据的相关系数
min_periods:样本最少的数据量
返回值:各类型之间的相关系数DataFrame表格。

8、绘图

9、查找值

data['col'].str.contains('str') #返回行熟,bool

10、处理json

import json #引入包

for i in data['col]:

a=json.loads(i)

print(a['json_str'])

技术相关 2020-04-06
上一篇: 下一篇:

评论已关闭。