如何使用 pandas 数据框中的 value_counts 绘制饼图?
How to build a pie chart, with plotly, using value_counts in pandas dataframe?
我有以下 pandas 数据框:
import numpy as np
import pandas as pd
import plotly.express as px
df1 = pd.DataFrame({'Name_City': ['Paris', 'Rio', 'Madri',
'Lisboa', 'Santiago', 'Toronto',
'Porto', 'Rio', 'Paris',
'Paris', 'Paris', 'Rio',
'Lisboa', 'Lisboa', 'Lisboa',
'Lisboa', 'Rio', 'Madri'],
'First': ['P', 'R', 'M', 'L', 'S', 'T', 'P', 'R', 'P',
'P', 'P', 'R', 'L', 'L', 'L', 'L', 'R', 'M']})
print(df1)
Name_City First
Paris P
Rio R
Madri M
Lisboa L
Santiago S
Toronto T
Porto P
Rio R
Paris P
Paris P
Paris P
Rio R
Lisboa L
Lisboa L
Lisboa L
Lisboa L
Rio R
Madri M
首先我想计算每个城市在数据框中出现的次数,所以我做了:
series = df1['Name_City'].value_counts()
df_result = pd.DataFrame(series)
df_result = df_result.reset_index()
df_result.columns = ['City', 'Total']
print(df_result)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
Toronto 1
Porto 1
注意:第一部分按预期工作。
在第二部分中,我想构建一个(饼图类型)图表来表示出现次数最多的五个城市。其他出现较少的城市我想在图表上显示为“其他”。
我尝试执行以下操作:
df_result_part = df_result.head(5)
print(df_result_part)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
fig = px.pie(df_result_part,
values='Total',
names='City')
fig.show()
我需要将出现次数最少的分组并命名为“其他”。我想请问如何自动执行此操作?
期望的输出是:
print(df_desired)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
Others 2
fig = px.pie(df_desired,
values='Total',
names='City')
fig.show()
从df_result
开始,您可以select第五行之后的所有城市名称替换为“其他”。默认情况下,这将始终有效 value_counts
returns 它的输出是排序顺序(递减计数):
df_result.loc[5:, 'City'] = 'other'
import plotly.express as px
fig = px.pie(df_result,
values='Total',
names='City')
输出:
我有以下 pandas 数据框:
import numpy as np
import pandas as pd
import plotly.express as px
df1 = pd.DataFrame({'Name_City': ['Paris', 'Rio', 'Madri',
'Lisboa', 'Santiago', 'Toronto',
'Porto', 'Rio', 'Paris',
'Paris', 'Paris', 'Rio',
'Lisboa', 'Lisboa', 'Lisboa',
'Lisboa', 'Rio', 'Madri'],
'First': ['P', 'R', 'M', 'L', 'S', 'T', 'P', 'R', 'P',
'P', 'P', 'R', 'L', 'L', 'L', 'L', 'R', 'M']})
print(df1)
Name_City First
Paris P
Rio R
Madri M
Lisboa L
Santiago S
Toronto T
Porto P
Rio R
Paris P
Paris P
Paris P
Rio R
Lisboa L
Lisboa L
Lisboa L
Lisboa L
Rio R
Madri M
首先我想计算每个城市在数据框中出现的次数,所以我做了:
series = df1['Name_City'].value_counts()
df_result = pd.DataFrame(series)
df_result = df_result.reset_index()
df_result.columns = ['City', 'Total']
print(df_result)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
Toronto 1
Porto 1
注意:第一部分按预期工作。
在第二部分中,我想构建一个(饼图类型)图表来表示出现次数最多的五个城市。其他出现较少的城市我想在图表上显示为“其他”。
我尝试执行以下操作:
df_result_part = df_result.head(5)
print(df_result_part)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
fig = px.pie(df_result_part,
values='Total',
names='City')
fig.show()
我需要将出现次数最少的分组并命名为“其他”。我想请问如何自动执行此操作?
期望的输出是:
print(df_desired)
City Total
Lisboa 5
Rio 4
Paris 4
Madri 2
Santiago 1
Others 2
fig = px.pie(df_desired,
values='Total',
names='City')
fig.show()
从df_result
开始,您可以select第五行之后的所有城市名称替换为“其他”。默认情况下,这将始终有效 value_counts
returns 它的输出是排序顺序(递减计数):
df_result.loc[5:, 'City'] = 'other'
import plotly.express as px
fig = px.pie(df_result,
values='Total',
names='City')
输出: