按列排序后数据丢失

问题描述 投票:0回答:1

我必须生成按麻疹污染年份排列的中位率图表。我注意到此行之后数据丢失了:

filtered_data['state'] = pd.Categorical(filtered_data['state'], categories=median_rates.index[median_rates.index <= 1963], ordered=True)

我的代码:

'''
import pandas as pd
import plotnine as pn


# Lê a base de dados
us_contagious_diseases = pd.read_csv("us_contagious_diseases.csv")

#Seleciona a doença
the_disease = "Measles"

# Filtrando os dados e criando uma cópia. A condição de filtragem é não ser do Havaí ou do Alasca e ser dados de sarampo
filtered_data = us_contagious_diseases[~us_contagious_diseases['state'].isin(["Hawaii", "Alaska"]) & (us_contagious_diseases['disease'] == the_disease)].copy()

# Calculando a taxa
filtered_data['rate'] = (filtered_data['count'] / filtered_data['population'] * 10000 * 52 / filtered_data['weeks_reporting'])
#print(filtered_data['state'])

# Calcula a mediana da coluna 'rate' para cada ano (agrupado por filtered_data.groupby('year'))
median_rates = filtered_data.groupby('year')['rate'].median()
print(filtered_data['state'])

# Reordenando os estados com base na taxa
filtered_data['state'] = pd.Categorical(filtered_data['state'], categories=median_rates.index[median_rates.index <= 1963], ordered=True)
print(filtered_data['state'])

# Filtrando para os dados da Califórnia e fazendo uma cópia
dat_ca = filtered_data[(filtered_data['state'] == "California") & filtered_data['rate'].notnull()].copy()
print(dat_ca)

# Criando o gráfico
pn.ggplot(dat_ca, pn.aes(x='year', y='rate')) + pn.geom_line() + pn.ylab("Cases per 10,000") + pn.geom_vline(xintercept=1963, color="blue")
'''

结果: Graphic

信息:

python graphics python-ggplot
1个回答
0
投票

这里的错误是您使用中位数利率指数(以年为单位)对州列进行分类。如果您想让

state
列成为分类变量并且只保留 1963 年之前的数据,您应该将导致问题的行更改为:

filtered_data = filtered_data[filtered_data['year'] <= 1963].copy()

filtered_data['state'] = pd.Categorical(filtered_data['state'], ordered=True)
© www.soinside.com 2019 - 2024. All rights reserved.