带字符串的Stackplot

时间:2019-07-23 09:33:35

标签: python dataframe plot

我有一个看起来像这样的数据框

import pandas as pd

sectors = [['Industrials', 'Health Care', 'Information Technology', 'Industrials'], ['Health Care', 'Health Care', 'Information Technology'], ['Industrials', 'Information Technology', 'Health Care', 'Information Technology', 'Information Technology'], ['Information Technology', 'Health Care']]
some_date = ['2015-12-01', '2016-01-05', '2016-02-01', '2016-03-01']
somelist = []
for i in range(len(some_date)):
    somelist.append((some_date[i], sectors[i]))
df = pd.DataFrame(somelist, columns = ['date', 'sectors'])

我想创建一个plt.stackplot,其中X轴是日期,Y轴是提及任何扇区的次数。

问题是它是字符串而不是整数,一种方法可能是遍历DataFrame的每一行并计算每个日期在每个日期中被提及的次数,但是我并不总是知道我所拥有的部门的名称,所以我想知道是否有更有效的方法来解决这个问题?

我试图通过使用df['sectors'].sum()来绘制plt.pie来检查在整个日期范围内每个扇区被提及了多少次,但是为此,我还需要以某种方式转换字符串。 / p>

1 个答案:

答案 0 :(得分:0)

不确定这有多有效,但我按如下所示修复了数据;

plot_sectors = list(set(df['sectors'].sum()))
plot_sectors = {key: [0]*df.shape[0] for key in plot_sectors}
for i in range(df.shape[0]):
    for sector in df.iloc[i]['sectors']:
        plot_sectors[sector][i] += 1

对于堆积图,我用过

y = plot_sectors.values()
x = np.arange(df.shape[0])
plt.stackplot(x,y, labels = plot_sectors.keys())

还有我使用的饼图;

plt.pie([sum(values) for key, values in plot_sectors.items()], autopct='%1.1f%%',
        labels=plot_sectors.keys())
plt.axis('equal')
plt.show()