как создать новый фрейм данных из вывода value_counts () - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть имя фрейма данных '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 ex: data=df

Итак, мой вопрос, я хочу вывод этой строки df ['Station']. Value_counts () в качестве нового фрейма данных

, чтобы я могпрямо передайте это как sns(data=new_df)

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Вы также можете создать новый Dataframe, используя count_values(), но тогда вместо 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")
0 голосов
/ 16 февраля 2019

Можно отфильтровать верхние значения по параметру order с помощью value_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])
...