代码基于jupyter编辑器实现,实现了pandas的DataFrame常见操作以及drop_duplicates、concat和groupby操作
1. 引入依赖文件,并定义数据
定义数据
import numpy as np
import pandas as pd
data = DataFrame(np.arange(16).reshape(4,4),index = list("ABCD"),columns=list('wxyz'))
print(data)
输出:
2. 取前两行,中间两行数据
print(data[0:2]) #取前两行数据
print(data[1:3]) #取中间两行数据
输出:
3. 求出一共多少行,多少列
print(len(data)) #求出一共多少行
print(data.columns.size) #求出一共多少列
输出:
4. 行索引名称,列索引名称
print(data.columns) #列索引名称
print(data.index) #行索引名称
输出:
5. 取行数据
print(data.loc['B']) #取第2行数据,参数为标签
print(data.iloc[1]) #取第2行数据,参数为行号
输出:
6. 取列数据
print(data['x']) #取列索引为x的一列数据
输出:
7. 按标签取特定行与特定列
print(data.loc[:,['x','z'] ]) #表示选取所有的行以及columns为x,z的列;
print(data.loc[['A','B'],['x','z']]) #表示选取'A'和'B'这两行以及columns为x,z的列的并集
输出:
8. 按行号、列号取特定行与特定列
print(data.iloc[1:3,1:3]) #数据切片操作,切连续的数据块
print(data.iloc[[0,2],[1,2]]) #即可以自由选取行位置,和列位置对应的数据,切零散的数据块
输出:
9. 取特定条件下的行与列
print(data[data>2]) #表示选取数据集中大于2的数据
print(data[data.x>5]) #表示选取数据集中x这一列大于5的所有的行
输出:
10. 取满足条件下的行
a1=data.copy()
print(a1)
print a1[a1['y'].isin(['6','10'])] #表显示满足条件:列y中的值包含'6','10'的所有行。
输出:
11. 求均值以及次数
print(data.mean()) #默认对每一列的数据求平均值;若加上参数a.mean(1)则对每一行求平均值;
print(data['x'].value_counts()) #统计某一列x中各个值出现的次数:
输出:
12. drop_duplicates:去除重复项
方法:
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
参数:
这个drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。
subset : column label or sequence of labels, optional
用来指定特定的列,默认所有列keep : {‘first’, ‘last’, False}, default ‘first’ 删除重复项并保留第一次出现的项
inplace : boolean, default False 是直接在原来数据上修改还是保留一个副本
13. concat:数据合并与重塑
方法:
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
keys=None, levels=None, names=None, verify_integrity=False)
常用参数说明 :
objs: series,dataframe或者是panel构成的序列lsit
axis: 需要合并链接的轴,0是行,1是列
join:连接的方式 inner,或者outer
- 相同字段的表首尾相接
# 现将表构成list,然后在作为concat的输入
In [4]: frames = [df1, df2, df3]
In [5]: result = pd.concat(frames)
要在相接的时候在加上一个层次的key来识别数据源自于哪张表,可以增加key参数
In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
- 横向表拼接(行对齐)
参数: axis
当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并
In [9]: result = pd.concat([df1, df4], axis=1)
参数: join
加上join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。
In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
14. groupby:数据的分组以及分组后地组内运算
- 引入依赖文件,并定义一个数据
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 1, 2, 2],
'B': [1, 2, 3, 4],
'C': np.random.randn(4)})
df
输出:
- reset_index() 表示重新设置索引
df.groupby(['A','B']).sum().reset_index()
输出:
- agg传进来的统计特征:按照 B 这一列作聚合,C 这一列作统计
df = df.groupby('B')['C'].agg(['min','max','mean','sum','count','std','median']).reset_index() # reset_index()是为了重置索引项
df
输出: