本篇Python CSV数据分析与可视化为Python数据分析入门实战案例,专为编程小白打造!教你用Pandas读取、清洗、统计CSV数据,用Matplotlib绘制可视化图表,从零实现一个完整的销售数据分析小项目,新手能快速掌握数据处理、可视化的核心用法,轻松入门Python数据分析领域!

图1:项目运行效果与图表展示,Python数据分析入门实战
一、项目功能说明
这是Python数据分析入门最经典的实战项目,我们将基于Pandas和Matplotlib,实现一个完整的销售数据分析小项目,帮你快速掌握数据分析的全流程,从「只会语法」到「能做项目」:
- 读取CSV数据,查看数据概览(行数、列数、统计信息),快速了解数据结构
- 数据清洗(处理缺失值、重复值),保证数据质量,为后续分析打基础
- 数据计算(计算每月总销售额、各产品销售额占比等),挖掘数据价值
- 绘制折线图(展示销售额月度趋势),直观呈现数据变化
- 绘制柱状图(展示各产品销售额对比),清晰对比不同产品表现
- 保存高清图表到本地,方便查看、分享和报告制作
二、环境准备
需要安装两个核心第三方库,执行以下命令即可完成安装,为项目做好准备:
pip install pandas matplotlib
三、CSV数据示例
准备一个销售数据CSV文件(sales.csv),作为本次项目的数据源,内容如下:
月份,产品A,产品B,产品C
1月,1000,1500,800
2月,1200,1600,900
3月,1100,1700,950
4月,1300,1800,1000
5月,1400,1900,1050
6月,1500,2000,1100
1月,1000,1500,800
2月,1200,1600,900
3月,1100,1700,950
4月,1300,1800,1000
5月,1400,1900,1050
6月,1500,2000,1100
四、完整代码实现
直接复制以下代码即可运行,代码注释清晰,完全适合新手学习和修改:
# 基于pandas和Matplotlib的CSV数据分析与可视化
import pandas as pd
import matplotlib.pyplot as plt# 设置中文显示,解决乱码问题
plt.rcParams[“font.sans-serif”] = [“SimHei”]
plt.rcParams[“axes.unicode_minus”] = Falsedef analyze_sales_data(file_path=”sales.csv”):
“””分析销售数据并绘制可视化图表”””
# 1. 读取CSV数据
try:
df = pd.read_csv(file_path)
except FileNotFoundError:
print(f” 错误:文件 {file_path} 不存在!”)
return None# 2. 数据概览
print(“\n 数据概览:”)
print(f”数据行数:{df.shape[0]},列数:{df.shape[1]}”)
print(“\n数据前6行:”)
print(df.head())
print(“\n数据统计信息:”)
print(df.describe())# 3. 计算每月总销售额
df[“总销售额”] = df[“产品A”] + df[“产品B”] + df[“产品C”]
print(“\n 每月总销售额:”)
print(df[[“月份”, “总销售额”]])# 4. 绘制折线图:每月总销售额趋势
plt.figure(figsize=(10, 6))
plt.plot(df[“月份”], df[“总销售额”], marker=”o”, linewidth=2, color=”#3496db”, label=”总销售额”)
plt.title(“每月总销售额趋势”, fontsize=14)
plt.xlabel(“月份”, fontsize=12)
plt.ylabel(“销售额(元)”, fontsize=12)
plt.grid(True, linestyle=”–“, alpha=0.7)
plt.legend()
plt.tight_layout()
plt.savefig(“sales_trend.png”, dpi=300, bbox_inches=”tight”)
print(“\n 已保存折线图:sales_trend.png”)# 5. 绘制柱状图:各产品销售额对比
plt.figure(figsize=(10, 6))
x = range(len(df[“月份”]))
width = 0.25
plt.bar([i – width for i in x], df[“产品A”], width=width, label=”产品A”, color=”#ff6b6b”)
plt.bar(x, df[“产品B”], width=width, label=”产品B”, color=”#4ecdc4″)
plt.bar([i + width for i in x], df[“产品C”], width=width, label=”产品C”, color=”#ffe66d”)
plt.title(“各产品每月销售额对比”, fontsize=14)
plt.xlabel(“月份”, fontsize=12)
plt.ylabel(“销售额(元)”, fontsize=12)
plt.xticks(x, df[“月份”])
plt.legend()
plt.grid(True, linestyle=”–“, alpha=0.7, axis=”y”)
plt.tight_layout()
plt.savefig(“product_sales.png”, dpi=300, bbox_inches=”tight”)
print(” 已保存柱状图:product_sales.png”)return dfdef main():
“””主程序”””
print(“=” * 50)
print(” CSV数据分析与可视化 v1.0″)
print(” 功能:CSV数据处理+可视化图表”)
print(“=” * 50)file_path = input(“\n请输入CSV文件路径(默认sales.csv):”).strip() or “sales.csv”
analyze_sales_data(file_path)
import pandas as pd
import matplotlib.pyplot as plt# 设置中文显示,解决乱码问题
plt.rcParams[“font.sans-serif”] = [“SimHei”]
plt.rcParams[“axes.unicode_minus”] = Falsedef analyze_sales_data(file_path=”sales.csv”):
“””分析销售数据并绘制可视化图表”””
# 1. 读取CSV数据
try:
df = pd.read_csv(file_path)
except FileNotFoundError:
print(f” 错误:文件 {file_path} 不存在!”)
return None# 2. 数据概览
print(“\n 数据概览:”)
print(f”数据行数:{df.shape[0]},列数:{df.shape[1]}”)
print(“\n数据前6行:”)
print(df.head())
print(“\n数据统计信息:”)
print(df.describe())# 3. 计算每月总销售额
df[“总销售额”] = df[“产品A”] + df[“产品B”] + df[“产品C”]
print(“\n 每月总销售额:”)
print(df[[“月份”, “总销售额”]])# 4. 绘制折线图:每月总销售额趋势
plt.figure(figsize=(10, 6))
plt.plot(df[“月份”], df[“总销售额”], marker=”o”, linewidth=2, color=”#3496db”, label=”总销售额”)
plt.title(“每月总销售额趋势”, fontsize=14)
plt.xlabel(“月份”, fontsize=12)
plt.ylabel(“销售额(元)”, fontsize=12)
plt.grid(True, linestyle=”–“, alpha=0.7)
plt.legend()
plt.tight_layout()
plt.savefig(“sales_trend.png”, dpi=300, bbox_inches=”tight”)
print(“\n 已保存折线图:sales_trend.png”)# 5. 绘制柱状图:各产品销售额对比
plt.figure(figsize=(10, 6))
x = range(len(df[“月份”]))
width = 0.25
plt.bar([i – width for i in x], df[“产品A”], width=width, label=”产品A”, color=”#ff6b6b”)
plt.bar(x, df[“产品B”], width=width, label=”产品B”, color=”#4ecdc4″)
plt.bar([i + width for i in x], df[“产品C”], width=width, label=”产品C”, color=”#ffe66d”)
plt.title(“各产品每月销售额对比”, fontsize=14)
plt.xlabel(“月份”, fontsize=12)
plt.ylabel(“销售额(元)”, fontsize=12)
plt.xticks(x, df[“月份”])
plt.legend()
plt.grid(True, linestyle=”–“, alpha=0.7, axis=”y”)
plt.tight_layout()
plt.savefig(“product_sales.png”, dpi=300, bbox_inches=”tight”)
print(” 已保存柱状图:product_sales.png”)return dfdef main():
“””主程序”””
print(“=” * 50)
print(” CSV数据分析与可视化 v1.0″)
print(” 功能:CSV数据处理+可视化图表”)
print(“=” * 50)file_path = input(“\n请输入CSV文件路径(默认sales.csv):”).strip() or “sales.csv”
analyze_sales_data(file_path)
if __name__ == “__main__”:
main()
五、运行效果演示
运行代码后,你会看到如下效果,完整体验项目的全部功能:
==================================================
CSV数据分析与可视化 v1.0
功能:CSV数据处理+可视化图表
==================================================
请输入CSV文件路径(默认sales.csv): 数据概览:
数据行数:6,列数:4
数据前6行:
月份 产品A 产品B 产品C
0 1月 1000 1500 800
1 2月 1200 1600 900
2 3月 1100 1700 950
3 4月 1300 1800 1000
4 5月 1400 1900 1050
5 6月 1500 2000 1100数据统计信息:
产品A 产品B 产品C
count 6.000000 6.000000 6.000000
mean 1250.000000 1750.000000 966.666667
std 187.082869 187.082869 103.279576
min 1000.000000 1500.000000 800.000000
25% 1125.000000 1625.000000 912.500000
50% 1250.000000 1750.000000 975.000000
75% 1375.000000 1875.000000 1037.500000
max 1500.000000 2000.000000 1100.000000 每月总销售额:
月份 总销售额
0 1月 3300
1 2月 3700
2 3月 3750
3 4月 4100
4 5月 4350
5 6月 4600已保存折线图:sales_trend.png
已保存柱状图:product_sales.png
CSV数据分析与可视化 v1.0
功能:CSV数据处理+可视化图表
==================================================
请输入CSV文件路径(默认sales.csv): 数据概览:
数据行数:6,列数:4
数据前6行:
月份 产品A 产品B 产品C
0 1月 1000 1500 800
1 2月 1200 1600 900
2 3月 1100 1700 950
3 4月 1300 1800 1000
4 5月 1400 1900 1050
5 6月 1500 2000 1100数据统计信息:
产品A 产品B 产品C
count 6.000000 6.000000 6.000000
mean 1250.000000 1750.000000 966.666667
std 187.082869 187.082869 103.279576
min 1000.000000 1500.000000 800.000000
25% 1125.000000 1625.000000 912.500000
50% 1250.000000 1750.000000 975.000000
75% 1375.000000 1875.000000 1037.500000
max 1500.000000 2000.000000 1100.000000 每月总销售额:
月份 总销售额
0 1月 3300
1 2月 3700
2 3月 3750
3 4月 4100
4 5月 4350
5 6月 4600已保存折线图:sales_trend.png
已保存柱状图:product_sales.png
六、核心知识点总结
- Pandas库:pd.read_csv()读取CSV,df.head()查看数据,df.describe()统计信息,df[]计算列数据,是Python数据分析的核心库
- Matplotlib库:plt.plot()绘制折线图,plt.bar()绘制柱状图,plt.savefig()保存图表,是Python数据可视化的基础工具
- 中文显示:设置plt.rcParams解决Matplotlib中文乱码问题,是国内数据分析的必备操作
- 数据可视化:通过图表直观展示数据趋势和对比,是数据分析的核心输出方式
- 图表美化:添加marker、grid、label等元素,提升图表可读性和专业度
七、扩展功能建议
掌握基础版项目后,你可以尝试扩展以下功能,进一步提升数据分析能力:
- 添加数据透视表功能,用pandas.pivot_table()实现多维数据分析
- 支持Excel数据处理,用pd.read_excel()读取Excel文件,适配更多数据源
- 绘制饼图展示各产品销售额占比,用plt.pie()实现占比可视化
- 添加异常值检测功能,自动识别并处理数据中的异常值
- 实现交互式图表,用Plotly库打造可交互的可视化界面
八、常见问题解答
在学习项目的过程中,新手常遇到以下问题,这里统一解答:
- Q:中文乱码怎么办?
A:在代码开头添加plt.rcParams设置,指定SimHei等中文字体,即可解决Matplotlib中文乱码问题,不同系统可替换为对应字体(如Mac的PingFang SC) - Q:CSV文件读取失败?
A:检查文件路径是否正确,确保文件存在且编码为UTF-8,若出现编码错误,可在read_csv()中添加encoding参数指定编码 - Q:如何处理缺失值?
A:用df.fillna()填充缺失值,或df.dropna()删除缺失值,根据业务需求选择,填充时可指定均值、中位数等 - Q:图表保存不清晰?
A:在savefig()中设置dpi=300,同时添加bbox_inches=”tight”避免标签截断,即可生成高清无裁剪的图表
小贴士:
1. 本文是Python实战案例系列的第10篇,是Python CSV数据分析与可视化的入门收官项目
2. 可将代码封装为GUI工具,用Tkinter打造可视化数据分析软件
3. 多动手修改数据、调整图表样式,比单纯看教程进步快得多!
4. 后续可学习NumPy、Seaborn等库,进一步提升数据分析能力
1. 本文是Python实战案例系列的第10篇,是Python CSV数据分析与可视化的入门收官项目
2. 可将代码封装为GUI工具,用Tkinter打造可视化数据分析软件
3. 多动手修改数据、调整图表样式,比单纯看教程进步快得多!
4. 后续可学习NumPy、Seaborn等库,进一步提升数据分析能力
本文是Python实战案例10篇技术专栏的第10篇,适合零基础入门学习Python CSV数据分析与可视化。
更多Python官方教程与学习资源,可参考Python官方中文教程,这是Python学习的权威参考依据。
本文为「小白编程笔记」原创 · Python零基础入门实战系列
文章标签:
Python CSV数据分析与可视化,Python数据分析入门,Python实战案例,Pandas数据处理,Matplotlib可视化,Python数据可视化,Python新手入门
Python CSV数据分析与可视化,Python数据分析入门,Python实战案例,Pandas数据处理,Matplotlib可视化,Python数据可视化,Python新手入门

渝公网安备50022402001073号
Pingback: Python 经典实战案例 10 篇技术专栏目录 - 小白 编程 笔记
Pingback: Python 实战案例:10 篇经典技术专栏全目录,零基础从入门到实战 - 小白 编程 笔记