喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。
前期基础教程:
「Python3.11.0」手把手教你安装最新版Python运行环境
讲讲Python环境使用Pip命令快速下载各类库的方法
Python启航:30天编程速成之旅(第2天)-IDE安装
【Python教程】JupyterLab 开发环境安装
Python启航:30天编程速成之旅(第29天)- pandas
pandas 是一个功能强大且易于使用的数据处理和分析库,广泛应用于数据分析、数据清洗、数据可视化等领域。它提供了两种主要的数据结构:Series 和 DataFrame,分别用于一维和二维数据的处理。本教程将详细介绍 pandas 的安装、基本用法、高级功能以及一些生动的例子,帮助你更好地理解和使用这个强大的工具。
1. 安装pandas
pandas 是一个第三方库,你需要通过 pip 来安装它。打开命令行并执行以下命令:
pip install pandas
如果你需要安装最新版本或特定版本的 pandas,可以使用以下命令:
pip install --upgrade pandas
2. 导入pandas
安装完成后,你可以通过以下方式导入 pandas:
import pandas as pd
3. 基本概念
Series
Series 是 pandas 中的一维数组对象,类似于 Python 的列表或 NumPy 的数组,但具有标签(索引)。
# 创建一个 Series
s = pd.Series([10, 20, 30, 40, 50], index=['a', 'b', 'c', 'd', 'e'])
print(s)
输出:
DataFrame
DataFrame 是 pandas 中的二维表格数据结构,类似于 Excel 表格或 SQL 表。它由多个 Series 组成,每个 Series 代表一列数据。
# 创建一个 DataFrame
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
print(df)
输出:
4. 数据读取与写入
pandas 支持多种文件格式的读取和写入,包括 CSV、Excel、JSON、SQL 等。
读取 CSV 文件
# 读取 CSV 文件
df = pd.read_csv(r'./第29天/data.csv')
print(df.head()) # 显示前 5 行
写入 CSV 文件
# 写入 CSV 文件
df.to_csv(r'./第29天/output.csv', index=False) # 不保存索引
output.csv 文件内容:
读取 Excel 文件
# 读取 Excel 文件
df = pd.read_excel(r'./第29天/data.xlsx', sheet_name='Sheet1')
print(df.head())
写入 Excel 文件
# 写入 Excel 文件
df.to_excel(r'./第29天/data.xlsx', index=False) # 不保存索引
读取 JSON 文件
# 读取 JSON 文件
df = pd.read_json(r'./第29天/data.json')
print(df.head())
写入 JSON 文件
# 写入 JSON 文件
df.to_json(r'./第29天/data.json', orient='records')
5. 数据选择与过滤
选择单列
# 选择单列
ages = df['年龄']
print(ages)
选择多列
# 选择多列
subset = df[['姓名', '年龄']]
print(subset)
使用loc和iloc
- loc:基于标签的索引,适用于按行名或列名选择数据。
- iloc:基于位置的索引,适用于按行号或列号选择数据。
# 使用 loc 选择数据
print(df.loc[0, '姓名'])
# 使用 iloc 选择数据
print(df.iloc[0, 0])
条件过滤
# 条件过滤
filtered_df = df[df['年龄'] > 30]
print(filtered_df)
6. 数据处理与转换
添加新列
# 添加新列
df['职业'] = ['工程师', '设计师', '产品经理', '工程师', '设计师', '产品经理', '工程师', '设计师', '产品经理', '工程师']
print(df)
删除列
# 删除列
df.drop(columns=['职业'], inplace=True)
print(df)
重命名列
# 重命名列
df.rename(columns={'年龄': 'Age'}, inplace=True)
print(df)
处理缺失值
# 查看缺失值
print(df.isnull())
# 删除含有缺失值的行
df.dropna(inplace=True)
# 填充缺失值
df.fillna(value=0, inplace=True)
数据类型转换
# 转换数据类型
df['Age'] = df['Age'].astype(int)
print(df.dtypes)
分组与聚合
# 分组与聚合
grouped = df.groupby('性别').agg({'年龄': 'mean'})
print(grouped)
7. 数据合并与连接
合并两个 DataFrame
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四'],
'年龄': [25, 30]
})
df2 = pd.DataFrame({
'姓名': ['王五', '赵六'],
'年龄': [35, 40]
})
# 合并两个 DataFrame
merged_df = pd.concat([df1, df2], ignore_index=True)
print(merged_df)
连接两个 DataFrame
import pandas as pd
# 创建两个 DataFrame
df1 = pd.DataFrame({
'姓名': ['张三', '李四'],
'年龄': [25, 30]
})
df2 = pd.DataFrame({
'姓名': ['张三', '李四'],
'城市': ['北京', '上海']
})
# 连接两个 DataFrame
joined_df = pd.merge(df1, df2, on='姓名')
print(joined_df)
8. 数据可视化
pandas 可以与 matplotlib 和 seaborn 结合使用,进行简单的数据可视化。
折线图
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel(r'./第29天/data.xlsx', sheet_name='Sheet1')
import matplotlib.pyplot as plt
# 设置中文字体为 'SimHei'(黑体)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 解决中文乱码问题
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
# 创建折线图
df.plot(x='姓名', y='年龄', kind='line')
plt.show()
柱状图
# 创建柱状图
df.plot(x='姓名', y='年龄', kind='bar')
plt.show()
散点图
# 创建散点图
df.plot(x='年龄', y='城市', kind='scatter')
plt.show()
直方图
# 创建直方图
df['年龄'].plot(kind='hist', bins=5)
plt.show()
9. 高级功能
时间序列分析
pandas 提供了强大的时间序列分析功能,支持日期时间操作、滚动窗口计算等。
import pandas as pd
# 创建时间序列数据
dates = pd.date_range(start='2023-01-01', periods=10, freq='D')
values = [100, 102, 105, 107, 109, 110, 112, 115, 118, 120]
df = pd.DataFrame({'日期': dates, '价格': values})
df.set_index('日期', inplace=True)
# 计算滚动平均
df['滚动平均'] = df['价格'].rolling(window=3).mean()
print(df)
数据透视表
pandas 提供了 pivot_table 方法,可以轻松创建数据透视表,进行多维度数据分析。
import pandas as pd
# 创建示例数据
data = {
'产品': ['A', 'B', 'C', 'A', 'B', 'C'],
'地区': ['北区', '南区', '东区', '北区', '南区', '东区'],
'销售额': [100, 150, 200, 120, 180, 220]
}
df = pd.DataFrame(data)
# 创建数据透视表
pivot_table = pd.pivot_table(df, values='销售额', index='产品', columns='地区', aggfunc='sum')
print(pivot_table)
应用自定义函数
你可以使用 apply 方法对 DataFrame 或 Series 应用自定义函数。
import pandas as pd
# 创建示例数据
df = pd.DataFrame({
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35]
})
# 定义自定义函数
def age_category(age):
if age < 30:
return '青年'
elif age < 40:
return '中年'
else:
return '老年'
# 应用自定义函数
df['年龄类别'] = df['年龄'].apply(age_category)
print(df)
11. 总结
pandas 是一个功能强大且易于使用的数据处理和分析库,广泛应用于各种数据分析任务中。通过本教程,你已经了解了 pandas 的基本用法、高级功能以及一些生动的例子。希望这些内容能够帮助你更好地掌握 pandas,并在你的项目中应用它。
喜欢的条友记得关注、点赞、转发、收藏,你们的支持就是我最大的动力源泉。