代码之家  ›  专栏  ›  技术社区  ›  Konate Malick

条形图python中的双标签

  •  0
  • Konate Malick  · 技术社区  · 6 年前

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

    事实上,当我想绘制一个月中某一天延迟聚合的条形图时,我的标签在x轴上会加倍。

    My barplot picture here

    你怎么解释呢? 我已经验证了我的“DAY\u OF\u 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 回复  |  直到 6 年前
        1
  •  0
  •   Aritesh    6 年前

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

    您需要显式地进行转换(请参见下面的示例)-

    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]