首页 > 解决方案 > 在 Python 中为分类变量绘制数字 Y 轴、X 轴时间序列的最佳方法是什么?

问题描述

我的数据框格式如下

Amount  Category    Transactiondatetime
9445    A16             22-04-2015 19:42
2000    A23             23-04-2015 16:29
1398    A16             02-05-2015 15:17
1995    A7              27-06-2015 13:51
2000    A23             07-08-2015 17:31

变量描述

假设category变量为网站上销售的某些产品类别。类别变量有大约 15-20 个类别。有的产品一年卖出20次,有的卖出50次,以此类推。

时间序列分布在一年中,数据有 6000000 行。

我的任务目标

我有兴趣查看一年中哪个类别获得最多的金额。这可能有点混乱,因为数据量很大,并且在时间序列尺度上的类别中会有一些重叠。

那么可视化此类数据的最佳方式是什么——它可以是 matplotlib、seaborn 或 bokeh 或任何其他库。

将欣赏代码示例。

在此处输入图像描述

标签: pythonmatplotlibdata-visualizationseabornbokeh

解决方案


也许只是使用条形图,y 轴为数量,x 轴为时间?

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv('something.csv')
df['Transactiondatetime'] = pd.to_datetime(df['Transactiondatetime'], infer_datetime_format=True)

categories = list(set(df['Category'].tolist()))
fig, ax = plt.subplots()
bar_width = 2.0
for category in categories:
    cat_df = df[df['Category'] == category]
    times = cat_df['Transactiondatetime'].tolist()
    values = cat_df['Amount'].tolist()
    ax.bar(times, values, bar_width, label=category)

ax.legend()
plt.xlabel('Transaction Date')
plt.ylabel('Amount')
plt.gcf().autofmt_xdate()

plt.show()

在此处输入图像描述


推荐阅读