微信改版,求求大家星标下公众号,
不然后面推送大家可能会看不到
Python Pandas 全面指南:用法介绍及10个应用场景实践
大家好,我是老表,今天给大家分享一篇 Pandas 全面教学指南,希望对大家学习数据分析及自动化办公有帮助。本文已经转为语音,欢迎大家点击下面播放按钮边听边看,效率更高,更专注。
Pandas 是 Python 中最常用的数据分析库之一,它提供了高效的数据结构和分析工具,尤其适用于处理表格数据和时间序列数据。Pandas 主要有两种数据结构:Series
和 DataFrame
,它们分别对应一维和二维数据。本文将全面介绍 Pandas 的基本用法,并通过 10 个实际应用场景展示其强大功能。
插播:现在下载我们自己开发的 想读APP,AI+阅读,还可以进一步让阅读、学习文章更简单,点击查看想读安装使用说明,现在注册后加文末我微信,发我注册邮箱,即有机会获得SVIP权限。
目录
-
1. Pandas 基本用法
-
1.1 导入 Pandas
-
1.2 创建 Series
-
1.3 创建 DataFrame
-
1.4 数据选择与过滤
-
1.5 数据处理
-
1.6 数据分组与聚合
-
1.7 数据可视化
-
-
2. 10 个 Pandas 应用场景及代码示例
-
场景1:读取 CSV 文件并分析销售数据
-
场景2:处理时间序列数据
-
场景3:数据清洗与处理
-
场景4:数据合并与连接
-
场景5:数据透视表与多重索引
-
场景6:数据重塑与转换
-
场景7:文本数据处理
-
场景8:数据筛选与高级查询
-
场景9:处理大数据
-
场景10:数据导出与保存
-
-
结语
1. Pandas 基本用法
1.1 导入 Pandas
在开始使用 Pandas 之前,首先需要导入库:
# 如果没安装的话先 pip install pandas
import pandas as pd
1.2 创建 Series
Series
是 Pandas 的一维数组,可以保存任意类型的数据,并带有索引。
# 创建一个简单的 Series
data = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])
print(data)
print("-----------")
# 三种不同的检索方式:
# data["b"] 和 data.loc["b"] 是通过标签 "b" 来检索 Series 中的元素;
# data.iloc[1] 是通过整数位置 1 来检索 Series 中的元素。
print(data["b"], data.iloc[1], data.loc["b"])

1.3 创建 DataFrame
DataFrame
是 Pandas 的二维数据结构,相当于 Excel 中的表格。
# 通过字典创建一个 DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 28],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print(df)

注意 DataFrame
数据检索和 Series
略微不同,iloc
是基于位置索引的,loc
是基于标签索引的,而直接使用列标签则是检索整个列的数据。。
1. 通过列标签(column label)检索:
你可以通过指定列标签来检索 DataFrame
中的某一列的数据。
# 通过列标签检索
print(df['姓名'])
这将返回 DataFrame
中的“姓名”列。
2. 通过 iloc
检索(基于位置索引):
iloc
可以基于行和列的位置索引来检索数据。
# 通过 iloc 检索
print(df.iloc[0]) # 检索第一行的数据
print(df.iloc[:, 1]) # 检索所有行的第二列(年龄列)
3. 通过 loc
检索(基于标签索引):
loc
可以基于行和列的标签来检索数据。
# 通过 loc 检索
print(df.loc[0, '姓名']) # 检索第一行“姓名”列的数据
print(df.loc[:, '城市']) # 检索所有行的“城市”列的数据
以上案例输出情况:

1.4 数据选择与过滤
Pandas 提供了多种方法来选择和过滤数据。
# 按列选择数据
print(df['姓名'])
print("----------------")
# 按条件过滤数据
print(df[df['年龄'] > 28])

1.5 数据处理
Pandas 提供了丰富的函数用于数据处理,如缺失值处理、数据转换等。
# 缺失值处理
df['年龄'] = df['年龄'].fillna(df['年龄'].mean())
# 数据转换
df['年龄'] = df['年龄'].astype(int)
1.6 数据分组与聚合
数据分组与聚合是 Pandas 的强大功能,特别适用于数据统计分析。
# 按城市分组,并计算平均年龄
grouped = df.groupby('城市').mean()
print(grouped)
1.7 数据可视化
Pandas 与 Matplotlib 库结合,可以轻松实现数据可视化。
import matplotlib.pyplot as plt
# 默认是索引作为x轴
df['年龄'].plot(kind='bar')
plt.show()

2. 10 个 Pandas 应用场景及代码示例
生成测试数据:
# 生成假数据
import pandas as pd
import numpy as np
# 设置随机种子以保证可重复性
np.random.seed(42)
# 生成假的销售数据
data = {
'Order ID': np.arange(1, 21), # 订单ID,从1到20
'Product': np.random.choice(['Laptop', 'Tablet', 'Smartphone', 'Monitor', 'Keyboard'], size=20), # 产品类别
'Quantity Sold': np.random.randint(1, 10, size=20), # 销售数量
'Price per Unit': np.round(np.random.uniform(50, 1000, size=20), 2), # 单价
'Total Sales': lambda df: df['Quantity Sold'] * df['Price per Unit'], # 总销售额
'Sale Date': pd.date_range(start='2023-01-01', periods=20, freq='D'), # 销售日期
'Customer Name': np.random.choice(['Alice', 'Bob', 'Charlie', 'David', 'Eva'], size=20), # 客户名称
'Region': np.random.choice(['North', 'South', 'East', 'West'], size=20) # 销售区域
}
# 创建DataFrame
df = pd.DataFrame(data)
df['Total Sales'] = df['Quantity Sold'] * df['Price per Unit'] # 计算总销售额
# 保存为CSV文件
file_path = './data/sales_data.csv'
df.to_csv(file_path, index=False)

场景1:读取 CSV 文件并分析销售数据
在数据分析中,读取 CSV 文件是非常常见的操作。Pandas 使得这一步骤非常简单。
import pandas as pd
# 读取 CSV 文件到 DataFrame
sales_data = pd.read_csv('./data/sales_data.csv')
# 查看前五行数据,了解数据结构
print("数据前五行:")
print(sales_data.head())
# 分析每个产品的销售量
sales_by_product = sales_data.groupby('Product')['Quantity Sold'].sum()
print("\n每个产品的总销售量:")
print(sales_by_product)

场景2:处理时间序列数据
Pandas 对时间序列数据有着强大的支持,例如处理股票数据。
import pandas as pd
# 读取 CSV 文件到 DataFrame
sales_data = pd.read_csv('./data/sales_data.csv')
# 将 'Sale Date' 列转换为日期类型
sales_data['Sale Date'] = pd.to_datetime(sales_data['Sale Date'])
# 按日期分组,计算每天的总销售额
daily_sales = sales_data.groupby('Sale Date')['Total Sales'].sum()
# 打印按日期分组后的数据
# print("\n按日期分组的总销售额:")
# print(daily_sales)
# 计算滚动平均值(窗口期为3天)
daily_sales_rolling = daily_sales.rolling(window=3).mean()
# 打印带滚动平均值的数据
# print("\n带有滚动平均值的总销售额:")
# print(daily_sales_rolling)
# 将两个 Series 合并到一个 DataFrame 中,列名分别为 'Total Sales' 和 'Rolling Mean'
combined_data = pd.DataFrame({
'Total Sales': daily_sales,
'Rolling Mean': daily_sales_rolling
})
# 打印合并后的数据,两个输出将并列显示
print(combined_data)

场景3:数据清洗与处理
数据清洗是数据分析中必不可少的一部分,Pandas 提供了多种工具用于去除重复数据、处理缺失值等。下面的例子展示了如何在销售数据中删除重复行并处理缺失值。
import pandas as pd
# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')
# 删除重复行
df_cleaned = sales_data.drop_duplicates()
print("删除重复行后的数据:")
print(df_cleaned)
# 处理缺失值(使用前向填充方法)
df_filled = sales_data.fillna(method='ffill')
print("\n处理缺失值后的数据(前向填充):")
print(df_filled)
场景4:数据合并与连接
在数据分析中,经常需要将多个表格的数据合并在一起,Pandas 提供了简单而强大的工具来实现这一功能。以下示例展示了如何将两个数据表左连接在一起。
import pandas as pd
# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')
# 创建一个额外的 DataFrame 模拟要合并的数据
additional_data = pd.DataFrame({
'Order ID': [1, 2, 3, 21],
'Discount': [5, 10, 0, 20]
})
# 左连接两个 DataFrame
merged_data = pd.merge(sales_data, additional_data, on='Order ID', how='left')
print("左连接后的数据:")
print(merged_data)

场景5:数据透视表与多重索引
透视表和多重索引是分析和总结数据的强大工具,尤其适用于汇总数据并从多个维度进行分析。下面展示了如何使用 Pandas 创建透视表并应用多重索引。
import pandas as pd
# 读取 CSV 文件
sales_data = pd.read_csv('./data/sales_data.csv')
# 创建透视表,按产品和地区汇总销售数量
pivot_table = pd.pivot_table(sales_data, values='Quantity Sold', index=['Product'], columns=['Region'], aggfunc='sum')
print("销售数量透视表:")
print(pivot_table)
# 设置多重索引
sales_data.set_index(['Product', 'Region'], inplace=True)
print("\n设置多重索引后的数据:")
print(sales_data)
场景6:数据重塑与转换
Pandas 提供了许多数据重塑工具,如 stack
和 unstack
,stack 可以快速将 Dataframe 转成Series 类型。以下示例展示了如何使用这些工具对数据进行重塑和转换。
import pandas as pd
# 读取数据并恢复默认索引
sales_data = pd.read_csv('sales_data.csv')
# 将数据重塑为堆叠格式
stacked = sales_data.stack()
print("堆叠后的数据:")
print(stacked)
# 取消堆叠
unstacked = stacked.unstack()
print("\n取消堆叠后的数据:")
print(unstacked)

场景7:文本数据处理
处理文本数据在数据分析中也很常见,Pandas 提供了强大的字符串操作功能。以下示例展示了如何提取字符串中的数字并进行字符串替换。
import pandas as pd
# 读取数据并恢复默认索引
sales_data = pd.read_csv('./data/sales_data.csv')
# 添加一个模拟文本列
sales_data['Text'] = ['Order 1', 'Order 2', 'Order 3', 'Order 4', 'Order 5', 'Order 6', 'Order 7', 'Order 8', 'Order 9', 'Order 10',
'Order 11', 'Order 12', 'Order 13', 'Order 14', 'Order 15', 'Order 16', 'Order 17', 'Order 18', 'Order 19', 'Order 20']
# 提取字符串中的数字
sales_data['Order Number'] = sales_data['Text'].str.extract('(\d+)', expand=False)
print("提取后的订单号:")
print(sales_data[['Text', 'Order Number']])
# 字符串替换
sales_data['Text'] = sales_data['Text'].str.replace('Order', 'Purchase')
print("\n替换后的文本:")
print(sales_data[['Text']])

场景8:数据筛选与高级查询
Pandas 使数据筛选和高级查询变得非常简单。以下示例展示了如何基于条件筛选数据以及如何查询特定列的值。
import pandas as pd
# 读取数据并恢复默认索引
sales_data = pd.read_csv('./data/sales_data.csv')
# 条件筛选:筛选销售数量大于5的记录
filtered_df = sales_data[sales_data['Quantity Sold'] > 5]
print("筛选销售数量大于5的记录:")
print(filtered_df)
# 查询特定列的值
values = sales_data.loc[sales_data['Product'] == 'Laptop', 'Customer Name']
print("\n购买 Laptop 的客户名称:")
print(values)

场景9:处理大数据
对于大数据集,Pandas 可以与 Dask 库结合使用,以支持并行计算和更高效的数据处理。后面我们再写一篇文章详细介绍 dask 。
import dask.dataframe as dd
# 使用 Dask 读取较大的 CSV 数据集(假设我们有一个大数据集)
ddf = dd.read_csv('./data/sales_data.csv')
# 执行延迟计算,计算每个产品的总销售量
result = ddf.groupby('Product')['Quantity Sold'].sum().compute()
print("Dask 计算每个产品的总销售量:")
print(result)

场景10:数据导出与保存
数据分析的最后一步通常是将处理后的数据导出到文件中,Pandas 支持多种导出格式。以下示例展示了如何将数据导出到 CSV 文件、Excel 文件以及 SQL 数据库中。
import pandas as pd
from sqlalchemy import create_engine
# 处理好的数据导出到 CSV 文件
sales_data.to_csv('output_sales_data.csv', index=False)
print("数据已导出到 output_sales_data.csv")
# 导出到 Excel 文件
sales_data.to_excel('output_sales_data.xlsx', sheet_name='SalesData', index=False)
print("数据已导出到 output_sales_data.xlsx")
# 导出到 SQL 数据库
engine = create_engine('sqlite:///sales_data.sql')
sales_data.to_sql('sales_data', engine, index=False)
print("数据已导出到 SQL 数据库的 sales_data 表中")

通过这些场景和示例代码,你可以掌握 Pandas 在数据清洗、处理、分析和导出方面的强大功能,并将其应用于实际的销售数据分析中。
3. 结语
Pandas 是 Python 生态系统中处理数据的利器,无论是数据清洗、分析还是可视化,Pandas 都提供了简洁而强大的工具。在本文中,我们介绍了 Pandas 的基础用法,并通过 10 个实际应用场景展示了 Pandas 的强大功能。希望这篇文章能帮助你更好地理解和使用 Pandas,在数据分析的道路上走得更远,当然如果你不想做数据分析,只是把 pandas 作为一个表格数据处理工具,进行一些办公自动化也是不错的选择。
无论你是数据分析新手,还是经验丰富的数据科学家,Pandas 都可以成为你处理数据时不可或缺的工具。赶紧动手试试吧!
最后,创作不易,如果觉得本文还行的话,请帮忙点赞、转发,也可以评论交流,不知道评论什么,说一句 666,也是对我莫大的鼓励。谢谢
插播:现在下载我们自己开发的 想读APP,阅读、学习文章更简单,点击查看想读安装使用说明,现在注册后加文末我微信,发我注册邮箱,即有机会获得SVIP权限。
加入我们
扫码加我微信,回复:AI阅读,
一起迎接AI时代