数据对象和方法

  • Series 一维结构的序列数据
  • DataFrame 二维结构的表数据
  • Panel 三维结构的面板数据

数据访问

通过 索引条件 访问

1
2
3
4
5
6
7
8
9
data = pd.DataFrame(np.random.randint(100, size = (4,5)), 
columns = ['a','b','c','d','e'])
print(data)
print(data[['a']])
print(data.loc[:, ['a', 'b']]) #loc按标签选
print(data.iloc[:, 0:2]) #iloc按位置选
# 逻辑运算符 & and, | or, ~ not
student[~(student.sclass == 1)]
student.query('score > 90')

数据修改

增加: data['f'] = data['a'] - data['b'];

data.assign(....) 添加列

data.append({'id' : 123, 'name' : 'jack', .....}) 添加行

删除: data.drop('f', axis = 1)

data.drop([0,3], axis = 0)

重命名: data.rename(columns = {'a':'aa'})

水平拼接: data.concat([d1, d2], aixs = 1)

垂直拼接: data.concat([d1, d2], aixs = 0)

注意增加相当于在原数据的字典新建内容;而删除不会改变原本内容,会返回一个新对象

文件读写

文件读取:read_csv(filepath_or_buffer, sep =',', delimiter = None, header ='infer', names = None, index_col = None, usecols = None, nrows = None, squeeze = False, prefix = None, dtype = None, skiprows = None, skipfooter = 0, nrows = None, encoding = None)

格式 读入 写出 额外常用参数
CSV pd.read_csv('path.csv') df.to_csv('out.csv', index=False) sep / encoding / parse_dates
Excel pd.read_excel('file.xlsx', sheet_name=0) df.to_excel('out.xlsx', index=False) sheet_name / usecols / dtype
JSON pd.read_json('data.json') df.to_json('out.json', force_ascii=False) orient='records' / lines=True
HTML pd.read_html('http://...', match='表头关键词')[0] df.to_html('out.html', index=False) 返回列表,记得取 [0]
场景 代码模板 结果说明
1. 二维 list pd.DataFrame([[1, 'A'], [2, 'B']], columns=['id','name']) 直接变表
2. 一维 list pd.DataFrame({'col': [10, 20, 30]}) 当成单列
3. 嵌套 tuple pd.DataFrame([(1, 'X'), (2, 'Y')], columns=['a','b']) tuple 与 list 等价
4. 字典列表(最常用) pd.DataFrame([{'id':1,'name':'A'}, {'id':2,'name':'B'}]) 自动对齐列
5. 列式字典 pd.DataFrame({'id':[1,2], 'name':['A','B']}) 一行代码建表
6. Series 字典 pd.DataFrame({'s1': pd.Series([1,2]), 's2': pd.Series([3,4])}) 可指定不同索引

文件写入: to_csv(self, path_or_buf=None, sep=',', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None)

统计分析方法

功能 函数 最常用的核心参数说明 缺省行为(axis 等) 返回结果简述
描述性统计 describe percentiles 自定义分位数;include/exclude 筛选数据类型 默认 axis=0(按列),只对数值列生效 计数、均值、标准差、最小值、四分位数、最大值等 8 项
非空计数 count axis=0/1numeric_only=False 是否只数数值列 axis=0 按列计数 每列(或行)非空元素个数
方差 var axis=0/1skipna=True 忽略 NA;ddof=1 自由度 axis=0 按列求方差 每列(或行)的样本方差
标准差 std var var 每列(或行)的样本标准差
最大值 max axis=0/1skipna=True axis=0 按列取最大 每列(或行)的最大值
最小值 min max max 每列(或行)的最小值