Pandas 统计分析基础
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
文本文件读取
读取文本文件。
pd.read_table(
[\'filepath_or_buffer\', "sep=\'\\t\'", \'delimiter=None\', "header=\'infer\'", \'names=None\', \'index_col=None\', \'usecols=None\', \'squeeze=False\', \'prefix=None\', \'mangle_dupe_cols=True\', \'dtype=None\', \'engine=None\', \'converters=None\', \'true_values=None\', \'false_values=None\', \'skipinitialspace=False\', \'skiprows=None\', \'nrows=None\', \'na_values=None\', \'keep_default_na=True\', \'na_filter=True\', \'verbose=False\', \'skip_blank_lines=True\', \'parse_dates=False\', \'infer_datetime_format=False\', \'keep_date_col=False\', \'date_parser=None\', \'dayfirst=False\', \'iterator=False\', \'chunksize=None\', "compression=\'infer\'", \'thousands=None\', "decimal=b\'.\'", \'lineterminator=None\', \'quotechar=\\'"\\'\', \'quoting=0\', \'escapechar=None\', \'comment=None\', \'encoding=None\', \'dialect=None\', \'tupleize_cols=None\', \'error_bad_lines=True\', \'warn_bad_lines=True\', \'skipfooter=0\', \'doublequote=True\', \'delim_whitespace=False\', \'low_memory=True\', \'memory_map=False\', \'float_precision=None\'],
)
读取 CSV 文件。
pd.read_csv(
[\'filepath_or_buffer\', "sep=\',\'", \'delimiter=None\', "header=\'infer\'", \'names=None\', \'index_col=None\', \'usecols=None\', \'squeeze=False\', \'prefix=None\', \'mangle_dupe_cols=True\', \'dtype=None\', \'engine=None\', \'converters=None\', \'true_values=None\', \'false_values=None\', \'skipinitialspace=False\', \'skiprows=None\', \'nrows=None\', \'na_values=None\', \'keep_default_na=True\', \'na_filter=True\', \'verbose=False\', \'skip_blank_lines=True\', \'parse_dates=False\', \'infer_datetime_format=False\', \'keep_date_col=False\', \'date_parser=None\', \'dayfirst=False\', \'iterator=False\', \'chunksize=None\', "compression=\'infer\'", \'thousands=None\', "decimal=b\'.\'", \'lineterminator=None\', \'quotechar=\\'"\\'\', \'quoting=0\', \'escapechar=None\', \'comment=None\', \'encoding=None\', \'dialect=None\', \'tupleize_cols=None\', \'error_bad_lines=True\', \'warn_bad_lines=True\', \'skipfooter=0\', \'doublequote=True\', \'delim_whitespace=False\', \'low_memory=True\', \'memory_map=False\', \'float_precision=None\'],
)
| 参数名称 | 说明 |
|---|---|
| filepath | 文件路径 |
| sep | 分隔符 |
| header | 选择某行当作列名 |
| names | 接受 array 表示列名 |
| index_col | 索引列的位置 |
| dtype | 写入的数据类型 |
| engine | 数据解析引擎 |
| nrows | 读取前 n 行 |
pd.read_table()
pd.read_csv()
文本文件存储
以 CSV 文件格式存储。
pd.DataFrame.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\', \'compression=None\', \'quoting=None\', \'quotechar=\\'"\\'\', "line_terminator=\'\\n\'", \'chunksize=None\', \'tupleize_cols=None\', \'date_format=None\', \'doublequote=True\', \'escapechar=None\', "decimal=\'.\'"],
)
| 参数 | 说明 |
|---|---|
| path_or_buf | 文件路径 |
| sep | 分隔符 |
| na_rep | 缺失值 |
| columns | 写出的列名 |
| header | 是否将列名写出 |
| index | 是否将行名(索引)写出 |
| index_label | 索引名 |
| mode | 数据写入模式 |
| encoding | 存储文件的编码格式 |
pd.DataFrame().to_csv()
读/写 Excel 文件
Excel 文件读取。
pd.read_excel(
[\'io\', \'sheet_name=0\', \'header=0\', \'names=None\', \'index_col=None\', \'usecols=None\', \'squeeze=False\', \'dtype=None\', \'engine=None\', \'converters=None\', \'true_values=None\', \'false_values=None\', \'skiprows=None\', \'nrows=None\', \'na_values=None\', \'parse_dates=False\', \'date_parser=None\', \'thousands=None\', \'comment=None\', \'skipfooter=0\', \'convert_float=True\', \'**kwds\'],
)
| 参数名称 | 说明 |
|---|---|
| io | 文件路径 |
| sheetname | Excel 内数据的分表位置 |
| header | 将某行作为列名 |
| names | 表示列名 |
| index_col | 索引列的位置 |
| dtype | 写入的数据类型(列名为 key,数据格式为 values)。 |
Excel 文件的储存。
pd.DataFrame.to_excel(
[\'self\', \'excel_writer\', "sheet_name=\'Sheet1\'", "na_rep=\'\'", \'float_format=None\', \'columns=None\', \'header=True\', \'index=True\', \'index_label=None\', \'startrow=0\', \'startcol=0\', \'engine=None\', \'merge_cells=True\', \'encoding=None\', "inf_rep=\'inf\'", \'verbose=True\', \'freeze_panes=None\'],
)
pd.read_excel()
pd.DataFrame.to_excel()
DataFrame 常用操作
基础属性:values, index, columns, dtypes,size、ndim、shape。
DataFrame 的单列数据是一个 Sereies 。
以字典的方式访问某一个 key 的值(列名)。
也可以直接的 . 一个列名。
也可将多个列索引名称放入一个列表。
可通过 head 和 tail 方法得到多行数据——开始和末尾的连续数据。
pd.DataFrame.head(self, n=5)
pd.DataFrame.tail(self, n=5)
pd.DataFrame.head()
pd.DataFrame.tail()
loc 和 iloc 访问方式
loc 方法针对 DataFrame 的索引名称的切片方法,能够实现所有单层索引切片操作。
pd.DataFrame.loc[行索引名称或条件, 列索引名称]
Access a group of rows and columns by label(s) or a boolean array.
.loc[] is primarily label based, but may also be used with a
boolean array.
iloc 接受的必须是行索引和列索引的位置。
pd.DataFrame.iloc[行索引位置, 列索引位置]
Purely integer-location based indexing for selection by position.
.iloc[] is primarily integer position based (from 0 tolength-1 of the axis), but may also be used with a boolean
array.
使用 loc 时,前后均为闭区间;
使用 iloc 时,为前闭后开。
pd.DataFrame.loc[]
pd.DataFrame.iloc[]
loc 内可以传入表达式,结果返回满足表达式的值。
iloc 不能接受表达式,因为条件表达式返回的为一个布尔值 Series,而 iloc 可以接收的数据类型并不包括 Series。但可以通过取出 .values 传入。
也可使用 ix 切片,此方法更像两种的融合。
pd.DataFrame.ix[行索引的名称或位置或者条件, 列索引名称或位置]
A primarily label-location based indexer, with integer position
fallback.
Warning: Starting in 0.20.0, the .ix indexer is deprecated, in
favor of the more strict .iloc and .loc indexers.
当索引名称和位置存在部分重叠时,ix 默认优先识别名称。
pd.DataFrame.ix[]
更改 DataFrame 中的数据
直接将部分数据提取出来重新赋值。
此方法无法撤销。
为 DataFrame 增添数据
添加一列:新建一个列索引,并对索引下的数据进行赋值。
删除某行或某列数据
pd.DataFrame.drop(
[\'self\', \'labels=None\', \'axis=0\', \'index=None\', \'columns=None\', \'level=None\', \'inplace=False\', "errors=\'raise\'"],
)
| 参数名称 | 说明 |
|---|---|
| labels | 代表删除的行或列标签 |
| axis | 操作的轴向 |
| level | 标签所在的级别 |
| inplace | 是否对原数据生效 |
pd.DataFrame.drop()
描述分析 DataFrame 数据
数值特征
最小值、均值、中位数、最大值、四分位数、极差、标准差、方差、协方差和变异系数等。
Pandas 基于 NumPy 库。
| 函数名称 | 说明 |
|---|---|
| np.min | 最小值 |
| np.mean | 均值 |
| np.median | 中位数 |
| np.var | 方差 |
| np.max | 最大值 |
| np.ptp | 极差 |
| np.std | 标准差 |
| np.cov | 协方差 |
可直接通过 describe 方法一次性得出数据框中数值特征的非空值数目、均值、四分位数和标准差。
pd.DataFrame.describe(self, percentiles=None, include=None, exclude=None)
pandas 中描述性统计方法
| 方法名称 | 说明 |
|---|---|
| min | 最小值 |
| mean | 均值 |
| median | 中位数 |
| var | 方差 |
| sem | 标准误差 |
| skew | 样本偏度 |
| quantile | 四分位数 |
| describe | 描述统计 |
| max | 最大值 |
| ptp | 极差 |
| std | 标准差 |
| cov | 协方差 |
| mode | 众数 |
| kurt | 样本峰度 |
| count | 非空值数目 |
| mad | 平均绝对离差 |
pd.DataFrame.describe()
类别型特征
描述类别型特征的分布状况,可用频数统计表。
pandas 库实现的方法为 value_counts。
pd.Series.value_counts(
[\'self\', \'normalize=False\', \'sort=True\', \'ascending=False\', \'bins=None\', \'dropna=True\'],
)
pandas 还提供了 category 类,可使用 astype 方法将目标特征的数据类型转换为 category 类型。
pd.Series.astype(self, dtype, copy=True, errors=\'raise\', **kwargs)
describe 方法同样可对 category 类型的数据进行描述性统计,4个统计量分别为列非空元素数目、类别的数目、数目最多的类别和数目最多类别的数目。
pd.Series.value_counts()
pd.Series.astype()