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

how to create new data frame from the output of value_counts()

我有一个数据框名称 'df' 并且我 运行 下面的代码...

df['Station'].value_counts()

我的输出将是:

Station 308A   -   3955

Station 329   -    3905

Station 313   -    2963

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

Station 381   -    2383

名称:站,数据类型:int64

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

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

给我错误!!!

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

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

这样我就可以直接将其作为 sns(data=new_df)

传递

您可以按参数 ordervalue_countsindex:

过滤最高值
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])

您也可以使用 count_values() 创建新的 Dataframe,但不是 sns.countplot(),它应该是 sns.barplot():

df = pd.DataFrame({'Station': np.random.randint(10, size=10)})
df['Station'] = 'station'+df['Station'].astype('str')

value_count = df['Station'].value_counts()
df1 = pd.DataFrame({'Station': value_count.index, 'Values': value_count.values})

# df1.head(3) will select top 3 rows
sns.barplot(x= "Station",y='Values', data=df1.head(3), palette="bright")