Pandas 数据科学速查表 Python

⚡ 智能摘要

Pandas 速查表将该库中最常用的命令浓缩在一页纸上。本参考资料按任务分类:安装、构建 Series 和 DataFrame、导入文件、选择行、清理数据、应用函数和导出结果。

  • 🔘 两种结构: Series 包含一个带标签的维度,而 DataFrame 包含两个维度,且列类型混合。
  • ☑️ 导入任何内容: read_csv、read_excel、read_sql、read_json 和 read_html 将文件加载到 DataFrame 中。
  • ✅ 精准选择: loc 按标签选择,iloc 按位置选择,布尔掩码按条件筛选行。
  • 🧪 清洁可靠: isnull、dropna、fillna、drop_duplicates 和 replace 处理空白和重复记录。
  • 🛠️ 快速检查: shape、info、dtypes 和 describe 在分析开始之前概括结构和统计信息。
  • ⚠️ 版本说明: pandas 3.0 默认启用写时复制,因此链式赋值会引发错误。

Pandas 数据科学速查表 Python

什么是 Pandas 速查表?

Pandas库提供了数百个函数,但日常工作中只会用到其中一小部分。 Pandas 速查表 这是一份单页参考资料,列出了这些命令,并按它们执行的任务进行了分组。

它涵盖了 Series 和 DataFrame 结构、文件的导入和导出、数据的选择和排序、数据清理以及函数的应用。以下每个部分都包含简短的解释和可运行的代码,因此该页面也可以作为您的复习资料。 数据分析能力.

👉 点击此处下载 PDF 版备忘单

如何安装和导入 Pandas

两条命令用于设置 Pandas,两条命令都可以在终端或命令行中运行。 Jupyter 笔记本 细胞。

步骤 1)安装 Pandas

每个环境运行一次;在笔记本单元格中,以感叹号作为前缀。

pip install pandas

步骤 2)导入 Pandas

以别名导入包 pd这里的每个例子都基于这个假设。

import pandas as pd

现在你可以调用 Pandas 函数来操作、分析和清理数据。以下各节按你通常使用它们的顺序排列。

Pandas 数据结构

Pandas 有两种数据结构, 系列 和 数据框两者都是带标签的数组,都可以存储任何数据类型。唯一的区别在于维度:Series 是一维数组,而 DataFrame 是由 和 构成的二维数组。 NumPy的 底层是数组。

特性 系列 数据框
尺寸 一维 二维
Holds 一个带标签的列 列数众多,数据类型混杂
构造函数 pd.Series() pd.DataFrame()

1.系列

它是一个一维带标签的数组。它可以存储任何数据类型,并且 None 变为缺失值。

s = pd.Series([2, -4, 6, 3, None], index=['A', 'B', 'C', 'D', 'E'])

2. 数据框

这是一个二维带标签的数组。它可以存储任何数据类型和不同大小的列。

data = {'RollNo' : [101, 102, 75, 99],
        'Name' : ['Mithlesh', 'Ram', 'Rudra', 'Mithlesh'],
        'Course' : ['Nodejs', None, 'Nodejs', 'JavaScript']
}
df = pd.DataFrame(data, columns=['RollNo', 'Name', 'Course'])
df.head()

下面这张可打印的速查表将相同的命令汇总在一页上。

可打印的 Pandas 速查表,列出了 Series 和 DataFrame 命令

导入数据

Pandas 可以直接将多种文件类型读取到 DataFrame 中。下面的每个读取器都会返回一个 DataFrame。 read_csv() 是最常用的。

# Import a CSV file pd
pd.read_csv(filename)

# Import a TSV file
pd.read_table(filename)

# Import a Excel file pd
pd.read_excel(filename)

# Import a SQL table/database
pd.read_sql(query, connection_object)

# Import a JSON file
pd.read_json(json_string)

# Import a HTML file
pd.read_html(url)

# From clipboard to read_table()
pd.read_clipboard()

# From dict
pd.DataFrame(dict)

选择

您可以按位置或索引标签选择元素。相同的方括号语法可以从两种结构中选择行、列和切片。

1.系列

# Accessing one element from Series
s['D']

# Accessing all elements between two given indices
s['A':'C']

# Accessing all elements from starting till given index
s[:'C']

# Accessing all elements from given index till end
s['B':]

2. 数据框

# Accessing one column df
df['Name']

# Accessing rows from after given row
df[1:]

# Accessing till before given row
df[:1]

# Accessing rows between two given rows
df[1:2]

通过布尔索引和设置进行选择

绝大部分储备使用 iloc 和 iat 对于整数位置,并且 loc 和 at 用于标签。

1. 按位置

df.iloc[0, 1]

df.iat[0, 1]

2. 按标签

df.loc[[0],  ['Name']]

3. 按标签/位置

df.loc[2] # Both are same
df.iloc[2]

4.布尔索引

布尔掩码仅保留条件为 True 的行。第二个示例添加了 NOT 运算符。 ~因此,它还会返回不大于 1 的值。

# Series s where value is > 1
s[(s > 0)]

# Series s where value is <-2 or >1
s[(s < -2) | ~(s > 1)]

# Use filter to adjust DataFrame
df[df['RollNo']>100]

# Set index a of Series s to 6
s['D'] = 10
s.head()

数据清理

对于 Python 数据清理备忘单的目的,您可以执行以下操作:

  • 使用以下方式重命名列 rename() 方法。
  • 使用以下方式更新值 at[] or iat[] 访问和修改特定元素的方法。
  • 使用以下方法创建 Series 或 DataFrame 的副本: copy() 方法。
  • 使用以下方法检查 NULL 值: isnull() 用这种方法丢弃它们 dropna() 方法。
  • 使用以下方法检查重复值 duplicated() 方法是:用这种方法扔掉它们。 drop_duplicates() 方法。
  • 使用以下方式替换 NULL 值 fillna() 使用指定值的方法。
  • 使用以下方式替换值 replace() 方法。
  • 使用以下方式对值进行排序 sort_values() 方法。
  • 使用以下方式对值进行排名 rank() 方法。
# Renaming columns
df.columns = ['a','b','c']
df.head()

# Mass renaming of columns
df = df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'})

# Or use this edit in same DataFrame instead of in copy
df.rename(columns={'RollNo': 'ID', 'Name': 'Student_Name'}, inplace=True)
df.head()

# Counting duplicates in a column
df.duplicated(subset='Name')

# Removing entire row that has duplicate in given column
df.drop_duplicates(subset=['Name'])

# You can choose which one keep - by default is first
df.drop_duplicates(subset=['Name'], keep='last')

# Checks for Null Values
s.isnull()

# Checks for non-Null Values - reverse of isnull()
s.notnull()

# Checks for Null Values df
df.isnull()

# Checks for non-Null Values - reverse of isnull()
df.notnull()

# Drops all rows that contain null values
df.dropna()

# Drops all columns that contain null values
df.dropna(axis=1)

# Replaces all null values with 'Guru99'
df.fillna('Guru99')

# Replaces all null values with the mean
s.fillna(s.mean())

# Converts the datatype of the Series to float
s.astype(float)

# Replaces all values equal to 6 with 'Six'
s.replace(6,'Six')

# Replaces all 2 with 'Two' and 6 with 'Six'
s.replace([2,6],['Two','Six'])

# Drop from rows (axis=0)
s.drop(['B',  'D'])

# Drop from columns(axis=1)
df.drop('Name', axis=1)

# Sort by labels with axis
df.sort_index()

# Sort by values with axis
df.sort_values(by='RollNo')

# Ranking entries
df.rank()

# s1 is pointing to same Series as s
s1 = s

# s_copy of s, but not pointing same Series
s_copy = s.copy()

# df1 is pointing to same DataFrame as df
df1 = s

# df_copy of df, but not pointing same DataFrame
df_copy = df.copy()

需要注意的是 s1 = s 只会为同一个对象创建第二个名称,绝不会创建副本——这就是原因。 copy() 接下来是它。

检索信息

您可以通过执行以下操作来检索信息:

  • 使用 shape 获取行数和列数的属性。
  • 使用 head() or tail() 获取前几行或后几行作为样本的方法。
  • 使用 info(), describe() or dtypes 获取数据类型、计数、平均值、标准差、最小值和最大值信息的方法。
  • 使用 count(), min(), max(), sum(), mean() 和 median() 获取特定数值统计信息的方法。
  • 使用 loc[] 获取行的方法。
  • 使用 groupby() 将 GROUP BY 函数应用于 DataFrame 的某一列,以对相似的值进行分组。

1。 基本信息

# Counting all elements in Series
len(s)

# Counting all elements in DataFrame
len(df)

# Prints number of rows and columns in dataframe
df.shape

# Prints first 10 rows by default, if no value set
df.head(10)

# Prints last 10 rows by default, if no value set
df.tail(10)

# For counting non-Null values column-wise
df.count()

# For range of index df
df.index

# For name of attributes/columns
df.columns

# Index, Data Type and Memory information
df.info()

# Datatypes of each column
df.dtypes

# Summary statistics for numerical columns
df.describe()

2。 总结

# For adding all values column-wise
df.sum()

# For min column-wise
df.min()

# For max column-wise
df.max()

# For mean value in number column
df.mean()

# For median value in number column
df.median()

# Count non-Null values
s.count()

# Count non-Null values
df.count()

# Return Series of given column
df['Name'].tolist()

# Name of columns
df.columns.tolist()

# Creating subset
df[['Name', 'Course']]

# Return number of values in each group
df.groupby('Name').count()

应用函数

apply() 它会将一个函数应用于每个值。然后,对齐规则会决定当两个对象仅共享部分索引时会发生什么情况。

# Define function
f = lambda x: x*5

# Apply this function on given Series - For each value
s.apply(f)

# Apply this function on given DataFrame - For each value
df.apply(f)

1. 内部数据对齐

# NA values for indices that don't overlap
s2 = pd.Series([8, -1, 4],  index=['A',  'C',  'D'])
s + s2

2. 算术 Opera系统蒸发散与填充方法

# Fill values that don't overlap
s.add(s2, fill_value=0)

3. 筛选、排序和分组

这些功能可用于筛选、排序和分组。ping Series 和 DataFrame 对象。

# Filter rows where column is greater than 100
df[df['RollNo']>100]

# Filter rows where 70 < column < 101
df[(df['RollNo'] > 70) & (df['RollNo'] < 101)]

# Sorts values in ascending order
s.sort_values()

# Sorts values in descending order
s.sort_values(ascending=False)

# Sorts values by RollNo in ascending order
df.sort_values('RollNo')

# Sorts values by RollNo in descending order
df.sort_values('RollNo', ascending=False)

汇出资料

下面的每个写入器都对应导入部分的读取器,因此文件无需额外工具即可完成往返传输。

# Export as a CSV file df
df.to_csv(filename)

# Export as a Excel file df
df.to_excel(filename)

# Export as a SQL table df
df.to_sql(table_name, connection_object)

# Export as a JSON file
df.to_json(filename)

# Export as a HTML table
df.to_html(filename)

# Write to the clipboard
df.to_clipboard()

Colab 的 Cheat Sheet

这里列出的每个命令都可以在配套的笔记本中运行: Pandas 备忘单 – Python 用于数据科学.ipynb.

常见问题

写时复制始终启用,字符串使用专用的 str 数据类型,对过滤后的副本进行链式赋值会引发 ChainedAssignmentError。请改用 .loc 赋值。此处的每个命令仍然在 pandas 3.0.

pd.merge() 以某种方式基于共享键进行连接 SQL `join` 函数的作用是对齐索引,`df.join()` 函数的作用是对齐索引,而 `pd.concat()` 函数的作用是堆叠数据帧。键值对使用 `merge` 函数,追加操作使用 `concat` 函数。

df.pivot_table() 将长行转换为宽聚合网格,pd.melt() 则反转此过程,stack() 或 unstack() 会在索引和列之间移动一个级别。

pd.to_datetime() 将文本转换为 datetime64,.dt 访问器公开年、月和星期几,而 resample() 一旦该列成为索引,就会按日、周或月进行聚合。

向量化操作在编译后的 C 代码中遍历整个数组,而 apply() 函数则调用一个 Python 每行执行一次该函数。交换ping 对向量化表达式使用逐行 apply() 通常速度快十倍。

AI 助手会将结果的简单描述映射到具体的函数调用,并建议使用 groupby、merge 或 pivot_table 等函数,以及每个函数所需的参数。请先在小样本上验证建议。

是的。 GitHub 副驾驶 将诸如“按课程和计数分组”之类的评论转换为可运行的 Pandas 代码。 Jupyter将输出结果视为草稿,并检查行数。

传递 dtype read_csv()将重复的文本列转换为类别,使用 `pd.to_numeric` 将数字转换为数值类型,并使用 `chunksize` 分块加载。`df.info()` 会报告实际的内存占用情况。

总结一下这篇文章: