水一篇|Pandas速查图表

文摘   2024-08-27 07:30   新加坡  

这是一份全面的Pandas速查表,可以帮助你掌握数据分析技能。通过学习关键函数和编码示例,并下载 Pandas 速查表 PDF 以便快速参考。

这篇文章是偏Data Science 工程师的,假如和你的工作相关度不大的话,可以跳过。文章里的例子都是通过chatGPT帮忙生成的,Pandas的编码示例都是测试过可以正常运行的。

下载链接:https://pandas.pydata.org/Pandas_Cheat_Sheet.pdf

介绍

Pandas 是 Python 中一个强大的库,广泛用于数据操作和分析。它提供了灵活的数据结构,如 Series 和 DataFrame,使处理结构化数据更加高效。

这份 Pandas 速查表旨在为你提供最常用的 Pandas 函数的快速参考,帮助你高效地执行数据分析任务。除此之外,你还将找到实际应用的编码示例,进一步说明这些函数的使用方法。

为什么使用Pandas速查表?

Pandas 速查表是一份便捷的参考指南,帮助你快速回顾并应用 Pandas 的函数和方法。无论你是初学者还是经验丰富的用户,这份速查表都能帮助你节省时间、提升工作效率。

开始使用Pandas

安装Pandas

你可以使用pip来安装Pandas,:

pip install pandas

导入Pandas

安装完成后,你可以将Pandas导入到你的Python脚本中:

import pandas as pd

Pandas中的数据结构

Series

Series是一个一维的标记数组,可以容纳任何数据类型。

import pandas as pd

# 创建一个包含整数的 Series
data = [10, 20, 30, 40]
series = pd.Series(data)

print(series)

DataFrame

DataFrame是一个二维的标记数据结构,具有潜在不同类型的列。

import pandas as pd

# 创建一个包含不同类型数据的字典
data = {
    'Name': ['Alice''Bob''Charlie''David'],
    'Age': [25, 30, 35, 40],
    'City': ['New York''Los Angeles''Chicago''Houston']
}

# 将字典转换为 DataFrame
df = pd.DataFrame(data)

print(df)

创建DataFrames

从字典 Dictionaries

import pandas as pd

# 创建一个字典,其中键是列名,值是列的数据
data = {
    'Product': ['Laptop''Tablet''Smartphone''Monitor'],
    'Price': [1000, 500, 800, 300],
    'In Stock': [True, True, False, True]
}

# 使用字典创建 DataFrame
df = pd.DataFrame(data)

print(df)

从列表 Lists

import pandas as pd

# 创建一个包含列表的列表,每个子列表表示一行数据
data = [
    ['Alice', 25, 'New York'],
    ['Bob', 30, 'Los Angeles'],
    ['Charlie', 35, 'Chicago'],
    ['David', 40, 'Houston']
]

# 指定列名并使用列表创建 DataFrame
df = pd.DataFrame(data, columns=['Name''Age''City'])

print(df)

从CSV文件

import pandas as pd

# 假设你有一个名为 'data.csv' 的 CSV 文件,内容如下:
# Name,Age,City
# Alice,25,New York
# Bob,30,Los Angeles
# Charlie,35,Chicago
# David,40,Houston

# 使用 pd.read_csv() 函数从 CSV 文件创建 DataFrame
df = pd.read_csv('data.csv')

# 打印 DataFrame
print(df)

数据检查

查看数据

# Display the first 5 rows
print(df.head())

# Display the last 5 rows
print(df.tail())

获取数据信息

# Display DataFrame info
print(df.info())

描述性统计

# Get descriptive statistics
print(df.describe())

数据选择

选择列

import pandas as pd

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice''Bob''Charlie''David'],
    'Age': [25, 30, 35, 40],
    'City': ['New York''Los Angeles''Chicago''Houston'],
    'Occupation': ['Engineer''Doctor''Artist''Lawyer']
}

df = pd.DataFrame(data)

# 选择单列
print(df['City'])

# 选择多列
print(df[['Name''Occupation']])

选择行

df = pd.DataFrame(data)

# 选择单行,使用 iloc 按位置
print("选择第二行(使用 iloc):")
print(df.iloc[1])
print("\n")

# 选择多行,使用 iloc 按位置
print("选择第一行和第三行(使用 iloc):")
print(df.iloc[[0, 2]])
print("\n")

# 选择行的切片,使用 iloc
print("选择第二行和第三行(使用 iloc 切片):")
print(df.iloc[1:3])
print("\n")

# 使用 loc 按标签选择行(假设索引为默认整数索引)
print("选择标签为 2 的行(使用 loc):")
print(df.loc[2])
print("\n")

条件选择

# 条件选择行
print("选择 Age 大于 30 的行(使用条件筛选):")
print(df[df['Age'] > 30])

数据清洗

处理缺失值

# 将缺失值填充为指定值(例如 'Unknown' 和 0)
df.fillna(0, inplace=True)
# 删除包含任何缺失值的行
df.dropna(inplace=True)

删除重复项

# 删除完全重复的行
df.drop_duplicates(inplace=True)

# 删除基于特定列的重复项# 在这个例子中,我们删除基于 'Name' 列的重复项,并保留第一出现的值 
df_no_duplicates_name = df.drop_duplicates(subset='Name', keep='first')

数据转换

添加新列

# 示例 1: 添加一个简单的新列
# 添加一个新列 'Occupation',所有值都设为 'Unknown'
df['Occupation'] = 'Unknown'

print("\nDataFrame with new column 'Occupation':")
print(df)

# 示例 2: 基于现有列创建一个新列
# 添加一个新列 'Age Group',根据 'Age' 列的值分类
df['Age Group'] = df['Age'].apply(lambda x: 'Young' if x < 30 else 'Adult')

print("\nDataFrame with new column 'Age Group':")
print(df)

应用函数

# 示例 1: 对列应用简单的算术运算
# 将 'Age' 列的值加 1
df['Age'] = df['Age'].apply(lambda x: x + 1)

print("\nDataFrame after applying function to 'Age' column:")
print(df)

# 示例 2: 对列应用条件函数
# 根据 'City' 列的值,添加一个新列 'Is in Texas',标记城市是否在德克萨斯州
df['Is in Texas'] = df['City'].apply(lambda x: 'Yes' if x == 'Houston' else 'No')

print("\nDataFrame after applying conditional function to 'City' column:")
print(df)

合并数据

import pandas as pd

# 创建第一个 DataFrame
df1 = pd.DataFrame({
    'Name': ['John''Anna''Mike''Sarah'],
    'Age': [28, 24, 35, 32]
})

# 创建第二个 DataFrame
df2 = pd.DataFrame({
    'Name': ['John''Anna''Mike''David'],
    'Salary': [50000, 60000, 75000, 80000]
})

# 打印原始 DataFrames
print("DataFrame 1:")
print(df1)
print("\nDataFrame 2:")
print(df2)

# 合并 DataFrame,基于 'Name' 列
merged_df = pd.merge(df1, df2, on='Name')

print("\nMerged DataFrame (Inner Join by default):")
print(merged_df)

# 示例 2: 使用外连接合并数据
merged_df_outer = pd.merge(df1, df2, on='Name', how='outer')

print("\nMerged DataFrame (Outer Join):")
print(merged_df_outer)

分组和聚合 (Grouping and Aggregating)

分组(GroupBy)

import pandas as pd

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice''Bob''Charlie''David''Eve''Frank'],
    'Age': [25, 30, 25, 30, 35, 30],
    'City': ['New York''Los Angeles''Chicago''Houston''Phoenix''Dallas'],
    'Salary': [70000, 80000, 70000, 85000, 90000, 80000]
}

df = pd.DataFrame(data)

# 打印原始 DataFrame
print("Original DataFrame:")
print(df)

# 示例 1: 按 'Age' 列分组,并计算每个年龄组的数量
grouped_df = df.groupby('Age')
print("\nSize of each group by 'Age':")
print(grouped_df.size())

# 示例 2: 按 'Age' 列分组,并计算每个组的平均工资
mean_salary_by_age = df.groupby('Age')['Salary'].mean()
print("\nMean Salary by 'Age':")
print(mean_salary_by_age)

聚合函数

import pandas as pd

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice''Bob''Charlie''David''Eve''Frank'],
    'Age': [25, 30, 25, 30, 35, 30],
    'City': ['New York''Los Angeles''Chicago''Houston''Phoenix''Dallas'],
    'Salary': [70000, 80000, 70000, 85000, 90000, 80000]
}

df = pd.DataFrame(data)

# 打印原始 DataFrame
print("Original DataFrame:")
print(df)

# 示例 1: 使用聚合函数对数据进行分组并求和
# 按 'Age' 列分组,并计算每个组的工资总和
salary_sum_by_age = df.groupby('Age')['Salary'].sum()
print("\nTotal Salary by 'Age':")
print(salary_sum_by_age)

# 示例 2: 使用多个聚合函数
# 按 'Age' 列分组,计算每个组的工资总和和平均值
salary_agg_by_age = df.groupby('Age')['Salary'].agg(['sum''mean'])
print("\nTotal and Mean Salary by 'Age':")
print(salary_agg_by_age)

数据可视化

使用Pandas绘图

import matplotlib.pyplot as plt

df = pd.DataFrame(data)

# 示例 1: 绘制单个列的柱状图
# 绘制 'Age' 列的柱状图
df['Age'].plot(kind='bar', color='skyblue')
plt.title('Age Distribution')
plt.xlabel('Index')
plt.ylabel('Age')
plt.show()

# 示例 2: 绘制多个列的折线图
# 绘制 'Age' 和 'Salary' 列的折线图
df[['Age''Salary']].plot(kind='line', marker='o')
plt.title('Age and Salary Trends')
plt.xlabel('Index')
plt.ylabel('Value')
plt.legend(['Age''Salary'])
plt.show()

# 示例 3: 绘制数据的饼图
# 按 'Age' 列的值分组,并计算每个年龄组的工资总和,然后绘制饼图
salary_sum_by_age = df.groupby('Age')['Salary'].sum()
salary_sum_by_age.plot(kind='pie', autopct='%1.1f%%', colors=['lightcoral''lightgreen''lightskyblue'])
plt.title('Salary Distribution by Age')
plt.ylabel('')  # 隐藏 y 轴标签
plt.show()

Pandas编码示例

示例1:创建DataFrames

import pandas as pd

# 创建一个包含数据的字典
data = {
    'Product': ['Laptop''Tablet''Smartphone''Monitor'],
    'Price': [1000, 500, 800, 300],
    'In Stock': [True, False, True, True]
}

# 使用字典创建 DataFrame
df = pd.DataFrame(data)

# 打印 DataFrame
print(df)

示例2:数据检查

df = pd.DataFrame(data)

# 打印前几行数据
print("Head of the DataFrame:")
print(df.head())

# 打印 DataFrame 的信息
print("\nInfo of the DataFrame:")
print(df.info())

# 打印统计描述信息
print("\nDescriptive statistics of the DataFrame:")
print(df.describe())

示例3:数据选择

df = pd.DataFrame(data)

# 示例 1: 选择单列
print("Selecting 'Name' column:")
print(df['Name'])

# 示例 2: 使用 iloc 选择行
# 选择索引为 1 到 2 的行 (不包括 3)
print("\nSelecting rows 1 to 2 using iloc:")
print(df.iloc[1:3])

# 示例 3: 使用条件筛选行
# 选择 Age 大于 30 的行
print("\nSelecting rows where 'Age' > 30:")
print(df[df['Age'] > 30])

示例4:处理缺失值

df = pd.DataFrame(data)

# 示例 1: 使用填充方法处理缺失值
# 填充缺失值为 0
df.fillna(0, inplace=True)

# 示例 2: 删除包含缺失值的行
# 重新创建 DataFrame,删除包含缺失值的行
df = pd.DataFrame(data)
df.dropna(inplace=True)

示例5:删除重复项

df = pd.DataFrame(data)

# 删除重复项
df.drop_duplicates(inplace=True)

# 打印删除重复项后的 DataFrame
print("\nDataFrame after dropping duplicates:")
print(df)

示例6:添加新列

df = pd.DataFrame(data)

# 添加一个新列 'Salary'
df['Salary'] = [70000, 80000, 75000, 85000]

# 打印添加新列后的 DataFrame
print("\nDataFrame after adding 'Salary' column:")
print(df)

示例7:应用函数

df = pd.DataFrame(data)

# 示例: 应用函数,将 'Age' 列中的每个值增加 1 岁
df['Age'] = df['Age'].apply(lambda x: x + 1)

# 打印应用函数后的 DataFrame
print("\nDataFrame after applying function to 'Age' column:")
print(df)

示例8:合并数据

import pandas as pd

# 创建第一个 DataFrame
df1 = pd.DataFrame({
    'Name': ['Alice''Bob''Charlie''David'],
    'Age': [25, 30, 35, 40]
})

# 创建第二个 DataFrame
df2 = pd.DataFrame({
    'Name': ['Alice''Bob''Charlie''Eve'],
    'Salary': [70000, 80000, 75000, 90000]
})

# 基于 'Name' 列合并两个 DataFrame
merged_df = pd.merge(df1, df2, on='Name')

# 打印合并后的 DataFrame
print("Merged DataFrame:")
print(merged_df)

示例9:分组数据

import pandas as pd

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice''Bob''Charlie''David''Eve''Frank'],
    'Age': [25, 30, 25, 30, 35, 30],
    'City': ['New York''Los Angeles''Chicago''Houston''Phoenix''Dallas'],
    'Salary': [70000, 80000, 75000, 85000, 90000, 80000]
}

df = pd.DataFrame(data)

# 按 'Age' 列分组,并计算每个年龄组的数量
age_group_sizes = df.groupby('Age').size()

# 打印分组后的结果
print("Number of entries in each age group:")
print(age_group_sizes)

示例10:绘制数据

import pandas as pd
import matplotlib.pyplot as plt

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice''Bob''Charlie''David''Eve''Frank'],
    'Age': [25, 30, 25, 30, 35, 30],
    'Salary': [70000, 80000, 75000, 85000, 90000, 80000]
}

df = pd.DataFrame(data)

# 示例 1: 绘制 'Age' 列的柱状图
df['Age'].plot(kind='bar', color='skyblue')
plt.title('Age Distribution')
plt.xlabel('Index')
plt.ylabel('Age')
plt.show()

# 示例 2: 绘制 'Salary' 列的折线图
df['Salary'].plot(kind='line', marker='o', color='green')
plt.title('Salary Trend')
plt.xlabel('Index')
plt.ylabel('Salary')
plt.show()

# 示例 3: 按年龄分组后绘制工资的饼图
salary_sum_by_age = df.groupby('Age')['Salary'].sum()
salary_sum_by_age.plot(kind='pie', autopct='%1.1f%%', colors=['lightcoral''lightgreen''lightskyblue'])
plt.title('Salary Distribution by Age')
plt.ylabel('')  # 隐藏 y 轴标签
plt.show()

附上Pandas速查表的两张截图


蔡荔谈AI
AI科普 AI培训 超级个体 创业
 最新文章