Python Class
数据对象和方法
Series一维结构的序列数据DataFrame二维结构的表数据Panel三维结构的面板数据
数据访问
通过 索引 或 条件 访问
1 | data = pd.DataFrame(np.random.randint(100, size = (4,5)), |
数据修改
增加: 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/1;numeric_only=False 是否只数数值列 |
axis=0 按列计数 |
每列(或行)非空元素个数 |
| 方差 | var |
axis=0/1;skipna=True 忽略 NA;ddof=1 自由度 |
axis=0 按列求方差 |
每列(或行)的样本方差 |
| 标准差 | std |
同 var |
同 var |
每列(或行)的样本标准差 |
| 最大值 | max |
axis=0/1;skipna=True |
axis=0 按列取最大 |
每列(或行)的最大值 |
| 最小值 | min |
同 max |
同 max |
每列(或行)的最小值 |