График данных типа линии не отображается - PullRequest
1 голос
/ 05 апреля 2019

Вот этот набор данных, который я собираюсь построить (его можно получить здесь https://www.kaggle.com/russellyates88/suicide-rates-overview-1985-to-2016). Я хотел построить suicides_no для мужчин и женщин, 25-34 лет в Российской Федерации, с 2000 по 2015 год Поэтому я создаю новый фрейм данных для этого.

Вот основной фрейм данных.

DF = pd.read_csv("D:/who_suicide_statistics.csv")

Вот мой код для создания нового фрейма данных.

DF1 = (DF.loc[(DF["country"] == "Russian Federation") & (DF["age"] == "25-34 years") 
        & (DF["sex"] == "male") & (DF["year"] >= 2000)])
DF2 = (DF.loc[(DF["country"] == "Russian Federation") & (DF["age"] == "25-34 years") 
        & (DF["sex"] == "female") & (DF["year"] >= 2000)])

year_sex_suicides = {}
year_sex_suicides["year"] = DF1["year"]
year_sex_suicides["male_suicides"] = DF1["suicides_no"]
year_sex_suicides["female_suicides"] = DF2["suicides_no"]
DF333 = pd.DataFrame(data=year_sex_suicides)

А вот код для сюжета, который я хотел.

DF333.plot(kind="line", x="year", y=["male suicides", "female_suicides"])

График, который я придумал, это

plot

Что-то не так, но я не смог его найти.

1 Ответ

0 голосов
/ 05 апреля 2019

Вероятно, в наборе данных, который вы пытаетесь построить, довольно много NaN с (посмотрите на свой DataFrame, например, оценив print(DF333)).

Вы можете либо заполнить их, используя что-то вроде (что не очень хороший способ!):

DF333.fillna(method='ffill', inplace=True)

Или сбросить индекс при построении вашего фрейма данных:

DF1 = (DF.loc[(DF["country"] == "Russian Federation") & (DF["age"] == "25-34 years") 
        & (DF["sex"] == "male") & (DF["year"] >= 2000)])
DF1 = DF1.set_index('year')
DF2 = (DF.loc[(DF["country"] == "Russian Federation") & (DF["age"] == "25-34 years") 
        & (DF["sex"] == "female") & (DF["year"] >= 2000)])
DF2 = DF2.set_index('year')

year_sex_suicides = {}
year_sex_suicides["male_suicides"] = DF1["suicides_no"]
year_sex_suicides["female_suicides"] = DF2["suicides_no"]
DF333 = pd.DataFrame(data=year_sex_suicides)

DF333.plot(kind="line", y=["male_suicides", "female_suicides"])

Таким образом, вы гарантируете, что все будет помещено в строку, соответствующую году, а не в индекс строки из исходного файла CSV.Конечно, вы также можете использовать что-то вроде groupby от Panda , что также уменьшит количество строк кода (но, возможно, вам понадобится DF1 и т. Д. Позже и для других целей):

DF1 = DF.loc[(DF["country"] == "Russian Federation") & (DF["age"] == "25-34 years")  
       & (DF["year"] >= 2000)]
DF1.groupby(['year', 'sex']).sum()['suicides_no'].groupby('sex').plot()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...