Вероятно, в наборе данных, который вы пытаетесь построить, довольно много 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()