Pandas教程-Pandas 简便手册
Pandas 可以被视为数据科学中最重要的 Python 包。它提供了许多处理数据的函数,使数据分析变得更加简便。其快速、灵活和表达力强大的数据结构旨在进行现实世界的数据分析。
Pandas 简便手册是一个快速指南,介绍了你在使用 Python 进行数据处理时需要了解的 Pandas 基础知识。如果你想以 Pandas 开始数据科学之旅,可以将它用作处理数据的便捷参考。
这份简便手册将引导你了解 Pandas 库的基础知识,从数据结构到输入/输出、选择、排序和排名等方面。
关键词和导入
在简便手册中,我们使用以下缩写:
- df: 指代任何 Pandas DataFrame 对象。
- s: 指代任何 Pandas Series 对象。你可以使用以下导入开始:
导入数据
- pd.read_csv(filename): 从 CSV 文件中读取数据。
- pd.read_table(filename): 用于从分隔文本文件中读取数据。
- pd.read_excel(filename): 从 Excel 文件中读取数据。
- pd.read_sql(query, connection_object): 从 SQL 表/数据库中读取数据。
- pd.read_json(json_string): 从 JSON 格式字符串、URL 或文件中读取数据。
- pd.read_html(url): 解析 HTML URL、字符串或文件,并提取表格到数据框列表。
- pd.read_clipboard(): 获取剪贴板内容并传递给 read_table() 函数。
- pd.DataFrame(dict): 从字典创建,字典的键为列名,值为数据列表。
导出数据
- df.to_csv(filename): 写入 CSV 文件。
- df.to_excel(filename): 写入 Excel 文件。
- df.to_sql(table_name, connection_object): 写入 SQL 表。
- df.to_json(filename): 以 JSON 格式写入文件。
创建测试对象
用于测试代码段。
- pd.DataFrame(np.random.rand(7, 18)): 指代 18 列 7 行的随机浮点数。
- pd.Series(my_list): 从可迭代对象 my_list 创建 Series。
- df.index = pd.date_range('1940/1/20', periods=df.shape[0]): 添加日期索引。
查看/检查数据
- df.head(n): 返回数据框的前 n 行。
- df.tail(n): 返回数据框的最后 n 行。
- df.shape: 返回行数和列数。
- df.info(): 返回索引、数据类型和内存信息。
- s.value_counts(dropna=False): 查看唯一值并计数。
- df.apply(pd.Series.value_counts): 对所有列的唯一值进行计数。
选择
- df[col1]: 返回带有标签 col 的列作为 Series。
- df[[col1, col2]]: 返回列作为新的数据框。
- s.iloc[0]: 按位置选择。
- s.loc['index_one']: 按索引选择。
- df.iloc[0, :]: 返回第一行。
- df.iloc[0, 0]: 返回第一列的第一个元素。
数据清理
- df.columns = ['a', 'b', 'c']: 重命名列。
- pd.isnull(): 检查空值并返回布尔数组。
- pd.notnull(): 是 pd.isnull() 的反义词。
- df.dropna(): 删除包含空值的所有行。
- df.dropna(axis=1): 删除包含空值的所有列。
- df.dropna(axis=1, thresh=n): 删除具有少于 n 个非空值的所有行。
- df.fillna(x): 用 x 替换所有空值。
- s.fillna(s.mean()): 用均值替换所有空值(均值可以替换为统计模块中的几乎任何函数)。
- s.astype(float): 将系列的数据类型转换为浮点数。
- s.replace(1, 'one'): 将所有等于 1 的值替换为 'one'。
- s.replace([1, 3], ['one', 'three']): 将所有 1 替换为 'one',将所有 3 替换为 'three'。
- df.rename(columns=lambda x: x+1): 重命名大量列。
- df.rename(columns={'old_name': 'new_name'}): 进行选择性重命名。
- df.set_index('column_one'): 用于更改索引。
- df.rename(index=lambda x: x+1): 重命名大量索引。
过滤、排序和分组
- df[df[col] > 0.5]: 返回列 col 大于 0.5 的行。
- df[(df[col] > 0.5) & (df[col] < 0.7)]: 返回 0.7 > col > 0.5 的行。
- df.sort_values(col1): 按升序对 col1 排序值。
- df.sort_values(col2, ascending=False): 按降序对 col2 排序值。
- df.sort_values([col1, col2], ascending=[True, False]): 按升序对 col1 排序值,按降序对 col2 排序值。
- df.groupby(col1): 返回一个根据某一列的值进行分组的对象。
- df.groupby([col1, col2]): 返回一个根据多列的值进行分组的对象。
- df.groupby(col1)[col2]): 返回按 col1 中的值分组的 col2 的平均值。
- df.pivot_table(index=col1, values=[col2, col3], aggfunc=mean): 创建一个按 col1 分组并计算 col2 和 col3 平均值的数据透视表。
- df.groupby(col1).agg(np.mean): 计算每个唯一 col1 组的所有列的平均值。
- df.apply(np.mean): 对每一列应用函数 np.mean()。
- nf.apply(np.max, axis=1): 对每一行应用函数 np.max()。
连接/组合
- df1.append(df2): 将 df1 的行添加到 df2 的末尾(列应相同)。
- pd.concat([df1, df2], axis=1): 将 df1 的列添加到 df2 的末尾(行应相同)。
- df1.join(df2, on=col1, how='inner'): 使用 SQL 风格将 df1 中的列与 df2 中具有相同值的列连接,'how' 可以是 'left'、'right'、'outer' 或 'inner'。
统计
统计函数可以应用于 Series,具体如下:
- df.describe(): 返回数值列的摘要统计。
- df.mean(): 返回所有列的平均值。
- df.corr(): 返回数据框中列之间的相关性。
- df.count(): 返回每个数据框列中的非空值计数。
- df.max(): 返回每列的最大值。
- df.min(): 返回每列的最小值。
- df.median(): 返回每列的中位数。
- df.std(): 返回每列的标准差。