barplot python

时间:2018-03-22 07:59:28

标签: python matplotlib bar-chart labels

我处理航班延误的数据集。 该数据集可在以下位置获得: https://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=236&DB_Short_Name=On-Time

事实是,当我想在每月的某一天绘制延迟汇总的条形图时,我的标签在x轴上加倍。

My barplot picture here

你怎么解释这个? 我已经验证我的“DAY_OF_MONTH”值是唯一的:

np.unique(list(df['DAY_OF_MONTH']))

代码是:

plt.figure(figsize=(20,20))
grouped = df[['ARR_DELAY', 'DAY_OF_MONTH']].groupby('DAY_OF_MONTH').mean()
grouped.plot(kind='bar',figsize=(15,10))
plt.title('Retard moyen des départs de vols selon les jours du mois, en minutes')

1 个答案:

答案 0 :(得分:0)

问题是对numpy数组进行类型转换。读取时的输入数据读取少量数值,少数字符。当您使用numpy检查唯一值时,它首先将您的pandas系列转换为numpy数组并强制所有元素成为String,然后计数唯一,这会产生正确的计数,但在绘制类型转换时不会发生。

您需要明确地进行投射(参见下面的示例) -

df1 = pd.DataFrame({'Col1': [1,2,3,4,5,6,7,8,9,10,11, 12, 1,2,3,4,5,6,7,8,9,10,11, 12],
                  'Col2' : [1,1,1,2,2,2,1,1,2,3,4,4,1,2,3,6,7,9,1,3,6,1,8,5,]})

df2 = pd.DataFrame({'Col1': ['1','2','3','4','5','6','7','8','9','10','11',' 12',' 1','2','3','4',\
                             '5','6','7','8','9','10','11',' 12'],
                  'Col2' : [1,1,1,2,2,2,1,1,2,3,4,4,1,2,3,6,7,9,1,3,6,1,8,5,]})

df = pd.concat([df1, df2], axis=0)
print(np.unique(list(df['Col1'])))


df['Col1'] = df['Col1'].astype('int32')
print(np.unique(list(df['Col1'])))
  

[' 1' ' 12' ' 1' ' 10' ' 11' ' 12' ' 2' ' 3' ' 4' ' 5' ' 6' ' 7' ' 8' ' 9']

     

[1 23 4 5 6 7 8 9 10 11 12]