一、为什么要学这个?(超实用场景)
各位老铁们!今天咱们要解锁的是数据分析中最经典的场景:读取CSV数据+可视化呈现(简直是大厂面试的送分题啊!!!)。无论是处理销售数据、分析实验结果,还是搞机器学习,CSV文件都是最常用的数据载体形式。相信我,这套组合拳学会了,你的数据分析效率直接起飞~
二、环境准备(3分钟搞定)
2.1 必须安装的库
pip install pandas matplotlib # 这两个神器必须装!
2.2 推荐工具
用Jupyter Notebook(交互式编程神器)或者VS Code(装Python插件)都行。我个人更推荐Jupyter,边写代码边看图表特别方便(亲测效率翻倍!)
三、完整代码流(含踩坑指南)
3.1 读取CSV文件
import pandas as pd
# 重点注意编码格式!中文windows系统默认是gbk
data = pd.read_csv('sales_data.csv', encoding='utf-8')
# 查看前5行(重要!快速检查数据是否正常)
print(data.head())
常见报错解决:
UnicodeDecodeError
:把encoding换成’gbk’或’gb2312’试试FileNotFoundError
:检查文件路径!建议用绝对路径如r’C:\data\test.csv’
3.2 数据清洗(关键步骤!)
# 处理缺失值(超级重要!)
data = data.dropna() # 删除有空值的行
# 转换日期格式(时间序列分析必备)
data['date'] = pd.to_datetime(data['date'])
# 过滤异常值(根据业务需求调整)
data = data[data['sales'] > 0]
3.3 画图实战(5种常用图表)
3.3.1 折线图(趋势分析)
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6)) # 设置画布大小
plt.plot(data['date'], data['sales'],
color='#FF6B6B', # 十六进制颜色码
linestyle='--',
linewidth=2,
marker='o')
plt.title('月度销售趋势', fontsize=14, fontweight='bold')
plt.xlabel('日期', fontsize=12)
plt.ylabel('销售额(万元)', fontsize=12)
plt.grid(True, linestyle=':', alpha=0.7) # 半透明网格线
plt.xticks(rotation=45) # X轴标签旋转45度
plt.tight_layout() # 自动调整布局
plt.show()
3.3.2 柱状图(对比分析)
# 按地区分组统计
region_sales = data.groupby('region')['sales'].sum()
plt.bar(region_sales.index, region_sales.values,
color=['#4ECDC4', '#45B7D1', '#9CDE9F'],
edgecolor='black')
# 添加数据标签(让图表更专业!)
for i, v in enumerate(region_sales.values):
plt.text(i, v+1000, f'{v:,}',
ha='center',
fontsize=10)
plt.title('各地区销售总额对比')
plt.savefig('sales_by_region.png', dpi=300) # 保存高清图
3.4 高级技巧(让图表更专业)
3.4.1 双Y轴图表
fig, ax1 = plt.subplots()
ax1.plot(data['date'], data['sales'], 'g-')
ax1.set_xlabel('日期')
ax1.set_ylabel('销售额', color='g')
ax2 = ax1.twinx() # 创建第二个Y轴
ax2.plot(data['date'], data['profit'], 'b--')
ax2.set_ylabel('利润', color='b')
plt.title('销售额与利润趋势对比')
3.4.2 动态交互图表(Bonus!)
# 需要安装plotly
import plotly.express as px
fig = px.scatter(data, x='sales', y='profit',
size='customer_count',
color='region',
hover_name='city',
trendline='ols') # 自动添加趋势线
fig.show() # 会弹出浏览器显示可交互图表
四、避坑指南(血泪经验)
-
中文显示问题:
添加这两行代码解决中文乱码:plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
-
图表模糊问题:
保存图片时加上dpi
参数:plt.savefig('chart.png', dpi=300, bbox_inches='tight')
-
大数据处理技巧:
CSV文件超过100MB时,用chunksize
分块读取:chunk_iter = pd.read_csv('big_data.csv', chunksize=10000) for chunk in chunk_iter: process(chunk) # 分批处理
五、项目实战思路
举个真实案例:分析某电商618销售数据
- 读取CSV(含日期、商品类目、销售额、用户地区等字段)
- 清洗数据(过滤退货订单、补全缺失地址)
- 可视化:
- 24小时销售趋势折线图
- 各省份销售额热力图
- 各品类销售额占比饼图
- 价格与销量的散点图
Pro Tip:把常用绘图代码封装成函数,比如:
def create_line_chart(df, x_col, y_col, title):
plt.figure(figsize=(10,6))
plt.plot(df[x_col], df[y_col])
# ...其他通用设置...
return plt
六、资源推荐
-
Matplotlib官方样式表:
执行print(plt.style.available)
查看所有预设样式
推荐使用:plt.style.use('seaborn') # 比默认样式好看10倍!
-
配色网站:
- coolors.co(自动生成配色方案)
- colorbrewer2.org(专业统计图表配色)
-
学习资料:
- 《Python数据可视化之美》
- Matplotlib官网Gallery(直接抄代码!)
最后说句掏心窝的话:数据可视化不是炫技,关键是清晰传达信息!多看看《经济学人》这类专业媒体的图表,培养数据叙事能力才是王道~