一、DataFrame
1. 常用基本方法及属性
df.info() 输出总行数、各列的行数、类型、索引、占用内存等信息;
df.index 输出索引,为 pandas.core.indexes.range.RangeIndex 类型;
df.columns 输出列名,为pandas.core.indexes.base.Index 类型,可使用df.columns.str ;
df.dtypes 各列的类型,输出一个series,值是object类型;
df.values 值,输出一个 array ;
df.describe() 输出各数值列的统计值,如非空个数、均值、std、极值、分位数。
2. 索引
df.set_index() 设置索引,括号内可以填入DataFrame中某列的列名,就能使用此列作为索引;
df.loc[ ] 以label索引,可实现花哨的混合索引,如:df.loc[ df.density>100, ['pop', 'density'] ] ;
df.iloc[ ] 以绝对位置索引,即数字;
掩码操作,如 df[ df ['density'] > 100 ] 。
3. 计算:
df.cov() 协方差,df.corr() 相关系数,df.mean(axis = 1),df.median(),df.max();
df[ 'Age' ].value_counts(ascending = True, bins = 5) 非nan计数(升序排列,分箱);
pd.cut()也能实现连续值离散化,pandas.cut(x,bins,right=True,labels=None,retbins=False,precision=3,include_lowest=False)。
4. 增删改查、合并、排序
使用df.copy()防止误修改df;
df.rename(index = {'a' : 'A'}, inplace = True) 重命名索引,注意需要inplace为True才能真正修改;
df.append(df2) 增加;
df.drop(['a', 'b'], inplace = True) 删除;
data.drop_duplicates()去重,subset参数可以选择具体的列;
df3 = pd.concat([df1,df2], axis = 0) 实现两个DataFrame的简易合并;
pd.merge(on, left_on, right_on, left_index, right_index, how, suffixes) 数据表连接操作,on可以指定多个列作为键;
多列排序 data.sort_values(by=['group','data'],ascending = [False,True],inplace=True),即在by、ascending处传入list,会先按'group'列再按'data'列排序。
5. groupby聚合 和数据透视表pivot_table(相当于多维的groupby操作)
df.pivot_table(index = 'Sex', columns='Pclass', values='Fare',aggfunc = 'sum') ,aggfunc默认是mean;
6. 时间序列
Pandas所有关于日期与时间的处理方法全部是通过Timestamp对象实现的;
pd.to_datetime('2017-11-24') 把str转化为Timestamp对象(pd.Timestamp也可以);
ts + pd.Timedelta('5 days') 用Timedelta加上时间间隔;
pd.read_csv()方法中参数parse_dates = True,可以直接将数据中的时间作为索引;
将时间戳作为索引值取出对应时间段内的数据:data[pd.Timestamp('2012-01-01 09:00'):pd.Timestamp('2012-01-01 19:00')] ,
同时也可以使用 data['2013'],data['2012-01':'2012-03'] 等简便方式;
仅取1月份的数据 data[data.index.month == 1] ;
时间重采样,将原始数据转化为均匀间隔的数据,
DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start',kind
=None, loffset=None, limit=None, base=0),如df.resample('3D')方法,对3天的数据进行重采样。
6. apply自定义函数 DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds),说明:
* 允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,
** 关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
7. 缺失值:DataFrame.isnull().any(),.fillna() 等。
8. 字符串Series.str.lower(),str是Series的一个属性,s.str.upper(),s.str.len(),index.str.strip(),df.columns.str.replace(' ','_'),s.str.split('_'),s.str.contains('Ag'),s.str.get_dummies(sep = '|') 。
9. notebook显示设置:
pd.set_option(),pd.get_option()用于使用Notebook做展示;
pd.set_option('display.max_columns',30),pd.set_option('display.max_colwidth',100),
pd.set_option('display.max_colwidth',100)。