通过向ai提问“使用python完成一个案例的数据分析和可视化”
ai给出详细步骤如下:
当然可以!我们来做一个Python数据分析与可视化的完整案例,从数据读取、清洗、分析到可视化一步步来。
下面是一个常见的案例:分析超市销售数据。
🛒 案例说明:超市销售数据分析
我们将分析一个超市的销售记录数据集,了解:
-
哪些城市销售额高?
-
各产品类别的销售情况?
-
不同时间段销售趋势?
-
客户类型对销售的影响?
第一步:准备数据
你可以使用下面的CSV格式数据保存为 supermarket_sales.csv
:
Invoice ID,Branch,City,Customer type,Gender,Product line,Unit price,Quantity,Tax 5%,Total,Date,Time,Payment,cogs,Gross margin percentage,Gross income,Rating
750-67-8428,A,Yangon,Member,Female,Health and beauty,74.69,7,26.1415,548.9715,1/5/2019,13:08,Ewallet,522.83,4.761905,26.1415,9.1
226-31-3081,C,Naypyitaw,Normal,Female,Fashion accessories,15.28,5,3.82,80.22,3/8/2019,10:29,Cash,76.4,4.761905,3.82,9.6
...
你可以使用完整的数据集(共1000条)在Kaggle找到:Supermarket sales | Kaggle
第二步:Python代码(分析 + 可视化)
确保你安装好下面的包:
pip install pandas matplotlib seaborn
然后运行下面的 Python 代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据
df = pd.read_csv('supermarket_sales.csv')
# 解析日期
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
df['Weekday'] = df['Date'].dt.day_name()
# 基础统计
print("数据概况:\n", df.describe())
print("字段缺失情况:\n", df.isnull().sum())
# 🟢 分析1:不同城市的销售额
city_sales = df.groupby('City')['Total'].sum().sort_values(ascending=False)
plt.figure(figsize=(8,5))
sns.barplot(x=city_sales.index, y=city_sales.values, palette='viridis')
plt.title("不同城市销售额比较")
plt.ylabel("总销售额")
plt.xlabel("城市")
plt.tight_layout()
plt.show()
# 🟢 分析2:产品线销售额
product_sales = df.groupby('Product line')['Total'].sum().sort_values()
plt.figure(figsize=(10,6))
sns.barplot(x=product_sales.values, y=product_sales.index, palette='magma')
plt.title("各产品线销售额")
plt.xlabel("总销售额")
plt.ylabel("产品线")
plt.tight_layout()
plt.show()
# 🟢 分析3:每天销售趋势
daily_sales = df.groupby('Date')['Total'].sum()
plt.figure(figsize=(12,5))
daily_sales.plot()
plt.title("每日销售趋势")
plt.ylabel("销售额")
plt.xlabel("日期")
plt.grid(True)
plt.tight_layout()
plt.show()
# 🟢 分析4:不同顾客类型销售对比
plt.figure(figsize=(8,6))
sns.boxplot(data=df, x='Customer type', y='Total', palette='pastel')
plt.title("不同顾客类型的消费分布")
plt.tight_layout()
plt.show()
第三步:你会看到以下可视化图表
-
各城市销售额柱状图
-
产品线销售柱状图(例如:Health and Beauty,Fashion,...)
-
每日销售趋势折线图
-
顾客类型消费分布箱线图
🔧 后续可做扩展:
-
计算每个产品线的平均客单价
-
分析支付方式占比
-
找出最高评分与最低评分的销售记录
-
用
plotly
做交互图
你想我帮你用这个案例做一个可执行的 .py
脚本、Jupyter Notebook 或者图形界面应用(GUI)吗?我可以继续帮你细化
注意:若出现中文乱码可以使用
# 设置中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
此时ai所绘制的表格默认使用的是英文,我们可以让他使用中文格式
好的,下面是修改后的中文格式版本。我们会对数据进行分析并生成相应的可视化图表。请确保你使用的是中文数据集。
然后运行以下代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 读取数据
df = pd.read_csv('supermarket_sales.csv')
# 解析日期
df['Date'] = pd.to_datetime(df['Date'])
df['Month'] = df['Date'].dt.month
df['Day'] = df['Date'].dt.day
df['Weekday'] = df['Date'].dt.day_name()
# 基础统计
print("数据概况:\n", df.describe())
print("字段缺失情况:\n", df.isnull().sum())
# 🟢 分析1:不同城市的销售额
city_sales = df.groupby('City')['Total'].sum().sort_values(ascending=False)
plt.figure(figsize=(8,5))
sns.barplot(x=city_sales.index, y=city_sales.values, palette='viridis')
plt.title("不同城市销售额比较")
plt.ylabel("总销售额")
plt.xlabel("城市")
plt.tight_layout()
plt.show()
# 🟢 分析2:产品线销售额
product_sales = df.groupby('Product line')['Total'].sum().sort_values()
plt.figure(figsize=(10,6))
sns.barplot(x=product_sales.values, y=product_sales.index, palette='magma')
plt.title("各产品线销售额")
plt.xlabel("总销售额")
plt.ylabel("产品线")
plt.tight_layout()
plt.show()
# 🟢 分析3:每天销售趋势
daily_sales = df.groupby('Date')['Total'].sum()
plt.figure(figsize=(12,5))
daily_sales.plot()
plt.title("每日销售趋势")
plt.ylabel("销售额")
plt.xlabel("日期")
plt.grid(True)
plt.tight_layout()
plt.show()
# 🟢 分析4:不同顾客类型销售对比
plt.figure(figsize=(8,6))
sns.boxplot(data=df, x='Customer type', y='Total', palette='pastel')
plt.title("不同顾客类型的消费分布")
plt.tight_layout()
plt.show()
输出内容:
-
不同城市销售额比较:通过柱状图展示不同城市的销售总额,帮助了解各城市销售的差异。
-
各产品线销售额:展示每个产品类别(例如健康与美容、时尚配饰等)销售的总额。
-
每日销售趋势:展示每日的销售总额,帮助识别销售高峰期或低谷。
-
不同顾客类型消费分布:通过箱线图比较会员顾客与普通顾客的消费金额差异。
图表解释:
-
柱状图:用于展示不同城市和不同产品类别的销售额。
-
折线图:展示时间序列数据(每日销售额),帮助分析销售趋势。
-
箱线图:用于显示不同顾客类型的消费差异,反映出顾客类型对销售额的影响。
后续扩展:
-
可以进一步分析每个产品类别的客单价和数量关系。
-
使用
plotly
库来进行更精美和交互式的图表展示。 -
计算每个销售记录的盈利情况,进一步分析利润来源。
如果需要进一步定制或创建图形界面,可以告诉我。
运行结果如下: