如何从value_counts()的输出创建新的数据框

时间:2019-02-16 10:27:45

标签: pandas seaborn pandas-groupby pandas-datareader

我有一个数据框名称'df',我在代码下运行...

df['Station'].value_counts()

我的输出将是:

Station 308A   -   3955

Station 329   -    3905

Station 313   -    2963

.....................

Station 381   -    2383

名称:工作站,dtype:int64

现在我想在计数图中绘制该图:

sns.countplot(x= "Station", data=df['Station'].value_counts().head(30), palette="bright")

给我错误!!!

因为我只能在数据data=df中传递数据帧

所以我的问题是我希望将此行df ['Station']。value_counts()输出为新数据框

以便我可以直接将其作为sns(data=new_df)

传递

2 个答案:

答案 0 :(得分:1)

您可以使用ordervalue_counts通过参数index过滤最高值:

np.random.seed(34345)

df = pd.DataFrame({'Station':np.random.randint(100, size=1000)}).astype(str).radd('station')
print (df.head())
     Station
0  station28
1  station48
2  station48
3  station61
4  station30

N = 5
sns.countplot(x='Station', 
              data=df, 
              palette="bright",
              order=df['Station'].value_counts().index[:N])

答案 1 :(得分:0)

您还可以使用 (suffix === 'Cost') && state.update(`${poolName}`, items => ({ ...items, [`${poolName}Share`]: (val / initialCost) * initialShare, //...similarly for other sibling property of `Share` in `poolName`...// }) ) 创建新的数据框,但是应该是count_values()而不是sns.countplot()

sns.barplot()