首页 > 解决方案 > 要绘制的时间序列数据

问题描述

我有一个带有时间的日期数据,以及在此日期期间发生的行业。例如,数据将是这样的:

示例示例

我想将日期绘制为本月哪些行业发生最多的月份

我怎样才能做到这一点?

标签: pythonpython-3.xmatplotlibtime-series

解决方案


因此,您的问题似乎是您有两种不同的数据类型,这使得创建图表变得困难。但是,您可以将数据重新格式化为您想要的正确类型,这将使​​以您想要的方式创建图表更加容易。像这样的东西应该可以满足您的需求。

import pandas as pd
import matplotlib.pyplot as plt

data = pd.DataFrame(
    [{'date_raised':pd.to_datetime('2016-01-01 00:00:00'),'primary_industry':'Real Estate'},
     {'date_raised':pd.to_datetime('2016-01-10 04:00:00'),'primary_industry':'IT Solutions'},
     {'date_raised':pd.to_datetime('2016-01-04 04:00:00'),'primary_industry':'Multimedia'},
     {'date_raised':pd.to_datetime('2016-01-05 04:00:00'),'primary_industry':'Technology'},
     {'date_raised':pd.to_datetime('2016-01-09 04:00:00'),'primary_industry':'Technology'}]
)

#Group data for monthly occurrences
result = data.sort_values('date_raised').groupby([data['date_raised'].dt.strftime('%B')])['primary_industry'].value_counts().unstack(level=1)
result.index.name = None #Remove index name "date_raised"
result.columns.names = [None] #Remove series name "primary_industry"

#Plot data
ax = result.plot(kind='bar',use_index=True,rot=1)
ax.set_xlabel('Month')
ax.set_ylabel('Total Occurrences')
plt.show()

推荐阅读