以下是批量数据导入与折线图生成的核心代码,支持 CSV 数据读取、缺失值处理和自定义图表样式:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np # 补充缺失的 numpy 导入
# 1. 数据导入与清洗
def load_and_clean_data(file_path):
# 读取 CSV 数据
df = pd.read_csv(file_path)
# 填充缺失值(数值型用均值,字符型用众数)
df = df.fillna({
col: df[col].mean() if df[col].dtype in [np.float64, np.int64] else df[col].mode()[0]
for col in df.columns
})
# 去除重复数据
df = df.drop_duplicates()
return df
# 2. 生成折线图
def generate_line_chart(df, x_col, y_cols, title, save_path):
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
# 创建图表
plt.figure(figsize=(12, 6))
colors = ['#22c55e', '#38bdf8', '#f97316', '#c084fc', '#f87171']
# 绘制多条折线
for i, y_col in enumerate(y_cols):
plt.plot(
df[x_col], df[y_col],
color=colors[i % len(colors)],
linewidth=2,
label=y_col
)
# 自定义图表样式
plt.title(title, fontsize=16, color='#fff', pad=20)
plt.xlabel(x_col, fontsize=12, color='#ccc')
plt.ylabel('数值', fontsize=12, color='#ccc')
plt.legend(fontsize=10, labelcolor='#ccc')
plt.grid(True, alpha=0.1, color='#444')
# 设置背景色
ax = plt.gca()
ax.set_facecolor('#0a0a0a')
plt.gcf().patch.set_facecolor('#0a0a0a')
# 保存图片(透明背景)
plt.savefig(
save_path,
dpi=300,
bbox_inches='tight',
facecolor='#0a0a0a',
edgecolor='none'
)
plt.close()
# 3. 主函数调用
if __name__ == '__main__':
# 数据路径
data_path = 'data/sales_data.csv'
save_path = 'output/sales_trend.png'
# 执行流程
df = load_and_clean_data(data_path)
generate_line_chart(
df,
x_col='日期',
y_cols=['销售额', '订单量', '客单价'],
title='月度销售趋势分析',
save_path=save_path
)
print(f"图表已保存至:{save_path}")