我正在尝试创建一个条形图来回答以下问题:哪种性别每年花的钱最多?我有一个数据集,其中列出了每笔交易,并附有每个条目所花费的金额、性别(男性、女性、其他)和日期(2014 年 10 月 16 日、2015 年 9 月 8 日、2016 年 7 月 29 日等) 。我想创建一个条形堆叠条形图,显示每年(仅当年)每个性别的支出总额。请帮忙!
THIS IS WHAT I HAVE SO FAR (Doesn't work):
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style = "white", color_codes=True)
sales = pd.read_csv("/kaggle/input/mobile-sales-dataset/mobile_sales.csv")
sales.groupby(['CustomerGender'])['TotalRevenue'].sum()
genders =["Male","Female","Other"]
w = 0.2
xp = range(len(genders))
plt.bar(xp,genders)
#p1 = plt.bar(bar1, male, w, label = "Male")
#p2 = plt.bar(bar2, female, w, label = "Female")
#p3 = plt.bar(bar3, other, w, label = "Other")
plt.ylabel('Total Revenue')
plt.title('Total Revenue by Gender')
plt.xticks(xp,x)
plt.legend()
plt.show()
```
需要做的第一件事是从“购买日期”列中提取年份信息,然后才能根据年份和性别对数据进行分组。以下是如何使用 Pandas 和 Seaborn 在 Python 中创建所需条形图的方法:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 从 csv 文件加载数据
sales = pd.read_csv("/kaggle/input/mobile-sales-dataset/mobile_sales.csv")
# 将“Purchase Date”列转换为日期时间对象
sales['Purchase Date'] = pd.to_datetime(sales['Purchase Date'])
# 从“Purchase Date”列中提取年份
sales['Year'] = sales['Purchase Date'].dt.year
# 按年份和性别对数据进行分组,并计算每个组的总收入
grouped_sales = sales.groupby(['Year', 'Customer Gender'])['Total Revenue'].sum().reset_index()
# 创建堆叠条形图
plt.figure(figsize=(10, 6))
sns.barplot(x='Year', y='Total Revenue', hue='Customer Gender', data=grouped_sales)
plt.xlabel('年份')
plt.ylabel('总收入')
plt.title('每年按性别划分的总收入')
plt.show()
此代码首先将“Purchase Date”列转换为日期时间对象,然后使用该对象提取年份信息。然后,它按年份和性别对数据进行分组,并计算每个组的总收入。最后,它使用 Seaborn 的
barplot
函数创建一个堆叠条形图,该函数显示每年每个性别的总支出。
此图将帮助回答哪个性别每年花费最多的问题。
标签:python From: 78813444