如何在Python中对数据透视表进行子图绘制?

时间:2019-04-21 11:25:29

标签: python pandas matplotlib

这里是新手程序员。我正在尝试学习Python,并且正在使用包含1994年至2003年美国出生数据的美国出生数据集。

我想每年创建一个散点图(10个底图),以显示每年每月的总出生人数。我“浪费”了整整一天的时间,但找不到正确的方法。我有一个包含所有所需数据的数据透视表,但无法将其放入绘图中。

https://imgur.com/a/zfp8OLV[table

%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("data/us_births.csv", skipinitialspace=True)
birth_per_month = df.groupby(['year','month']).births.sum().reset_index(name ='Births')

pd.pivot_table(birth_per_month, index='year', columns='month', values='Births')

1 个答案:

答案 0 :(得分:0)

您的基本代码是正确的,也许这可以为您提供帮助:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
%matplotlib inline

df = pd.read_csv("births.csv")
birth_per_month = df.groupby(['year','month']).births.sum().reset_index(name ='Births')
df = pd.pivot_table(birth_per_month, index='year', columns='month', values='Births')

从这里开始,我们可以进行子绘图。使用年份和相应数据的格式可能会转换为“熊猫系列”,不支持散点图。代替尝试这个:

fig, axarr = plt.subplots(5,2, figsize=(16,12))

axarr[0,0].scatter(df.columns,df.loc[1994])
axarr[0,0].set_title('1994')
axarr[0,1].scatter(df.columns,df.loc[1995])
axarr[0,1].set_title('1995')
axarr[1,0].scatter(df.columns,df.loc[1996])
axarr[1,0].set_title('1996')
axarr[1,1].scatter(df.columns,df.loc[1997])
axarr[1,1].set_title('1997')
#And so on

您最终会得到一些类似的东西: https://i.stack.imgur.com/4bvPx.png

希望它对您有帮助