Python——DataFrame基础操作
DataFrame理解 DataFrame可以看做是有序排列的若干Series对象,这里的“排列”是指这些Series都有共同的索引。 一、读取文件 dt = pd.read_csv(path) dt = pd.read_excel(path) dt = pd.read_table(path,sep=‘,‘) ? 二、索引 第一类索引是iloc属性,表示取值和切片都是显式的,dt.iloc[1:3] #注:从0开始的左闭右开区间 第二类索引是loc属性,表示索引是隐式的,如dt.loc[:‘Illinois‘,:‘pop‘] 第三种索引ix可实现一种混合效果,如dt.ix[:3,:‘pop‘] ? 三、合并与连接 1、pd.concat() ? pd.concat(objs,axis=0,join=‘outer‘,join_axes=None,ignore_index=False,keys=None,levels=None) 其中,axis=0是按照行合并,axis=1是按列合并(也可写成axis=‘col‘)。axis=1时是按照索引合并的。 ser1 = pd.Series([‘A‘,‘B‘,‘C‘]) ser2 = pd.Series([‘D‘,‘E‘,‘F‘]) ser3 = pd.Series([‘G‘,‘H‘,‘I‘]) a = pd.concat([ser1,ser2]) a的结果如下,如果直接按列合并ser3,就会报错。 0 A 1 B 2 C 0 D 1 E 2 F dtype: object 因为此时a的索引是保留原本的两个Series的Index的,可通过设置ignore_index=True,重置索引, 2、 pd.append() ser1.append(ser2) Pandas的append()不直接更新原有对象的值,而是为合并后的数据创建一个新对象。 3、pd.merge() pd.merge(left,right,how=‘inner‘,on=None,left_on=None,right_on=None,left_index=False,right_index=False, ? 详见help(pd.merge) ? 四、分组(Gruopby) 分组统计时需要使用到groupby方法,其原理是通过分割(split)、应用(apply)和组合(combine)得到结果。 Groupby是对数据按照指定列进行分割,返回一个DataFrameGroupBy对象。DataFrameGroupBy对象里面隐藏着若干组数据,但是没有应用累计函数之前不会计算。
import numpy as np
rng = np.random.RandomState(0)
df = pd.DataFrame({‘key‘:[‘A‘,‘B‘,‘C‘,‘A‘,‘C‘],
‘data1‘:range(6),
‘data2‘:rng.randint(0,10,6)},
columns=[‘key‘,‘data1‘,‘data2‘]) df.groupby(‘key‘)
?
Out[15]:
(1)聚合aggregate 应用函数后会对DataFrameGroupBy对象展开计算。 df.groupby(‘key‘).aggregate([‘min‘,np.median,max])
?还可以通过字典指定不同列需要的函数 df.groupby(‘key‘).aggregate({‘data1‘:‘min‘,‘data2‘:‘max‘})
?(2)过滤filter def filter_func(x): return x[‘data2‘].std() > 4 print(df.groupby(‘key‘).std()) print(df.groupby(‘key‘).filter(filter_func)) ?
?
(3)转换transform df.groupby(‘key‘).transform(lambda x:x-x.mean())
? 五、数据透视表 详见help(pd.pivot_table) titanic.pivot_table(‘survived‘,index=‘sex‘,columns=‘class‘,aggfunc={‘survived‘:sum,‘fare‘:‘mean‘}) ? 六、其他操作(排序、去重、计算及按行列应用函数等) 1、排序 按照索引排序 df.sort_index(ascending=False)
?按照值排序 df.sort_values(by=[‘key‘,‘data2‘])
2、去重 df.drop_duplicates(‘data2‘,keep=‘first‘)
想要知道某一列有多少个不重复的元素可以用df[‘data1‘].nunique() 3、删除Drop 按照行删除 先选出需要删除的行的index,再删除指定index df.drop(df.loc[df[‘key‘]==‘A‘].index,axis=0)
按照列删除 df.drop([‘key‘,‘data2‘],axis=1) ? ? 参考:《Python数据科学手册》 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |