我必须生成按麻疹污染年份排列的中位率图表。我注意到此行之后数据丢失了:
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")
'''
信息:
这里的错误是您使用中位数利率指数(以年为单位)对州列进行分类。如果您想让
state
列成为分类变量并且只保留 1963 年之前的数据,您应该将导致问题的行更改为:
filtered_data = filtered_data[filtered_data['year'] <= 1963].copy()
filtered_data['state'] = pd.Categorical(filtered_data['state'], ordered=True)