#python #pandas #csv #graphing
#python #pandas #csv #построение графиков
Вопрос:
Country,World_Bank_Income_Level,Region,2017,2016,2015,2014,2013,2012,2011,2010,2009,2008,2007,2006,2005,2004,2003,2002,2001,2000,1999,1998,1997,1996,1995,1994,1993,1992,1991,1990,1989,1988,1987,1986,1985,1984,1983,1982,1981,1980
Afghanistan,WB_LI,EMR,62,62,62,60,57,59,64,62,60,59,55,53,50,48,39,35,37,27,31,31,38,42,41,40,25,22,19,20,22,34,31,14,14,14,9,8,,11
Albania,WB_LMI,EUR,96,96,97,98,99,98,99,99,97,98,97,95,97,96,93,96,95,95,85,89,95,92,91,90,76,87,80,88,96,96,96,96,96,96,96,93,90,90
Algeria,WB_UMI,AFR,88,94,95,95,95,95,95,95,92,88,92,91,83,81,84,81,83,80,83,84,92,90,89,88,87,86,85,83,82,81,73,67,68,,,,,
Andorra,WB_HI,EUR,99,97,96,96,95,98,99,99,98,98,94,91,94,98,96,98,97,97,97,90,90,,,,,,,,,,,,,,,,,
Angola,WB_LMI,AFR,42,45,51,56,59,67,60,67,53,57,68,30,29,50,50,64,64,35,42,60,78,62,46,44,47,39,39,38,48,56,55,44,44,35,26,,,
Antigua and Barbuda,WB_HI,AMR,88,88,91,93,96,98,99,98,99,99,99,99,99,97,99,99,97,95,99,99,93,99,93,91,99,99,87,89,95,95,89,80,69,73,48,,,
Argentina,WB_UMI,AMR,89,90,89,95,94,94,95,95,96,96,94,97,98,99,97,95,89,91,97,95,93,99,99,96,95,92,99,93,89,87,80,87,54,79,67,67,77,61
Armenia,WB_LMI,EUR,96,97,97,97,97,97,97,97,96,94,92,92,94,92,94,91,93,92,92,94,92,89,96,95,95,93,,,,,,,,,,,,
Australia,WB_HI,WPR,95,95,95,94,94,94,94,94,94,94,94,94,94,94,94,94,92,91,88,82,85,87,87,86,86,86,86,86,85,77,68,68,68,68,68,,,
Austria,WB_HI,EUR,96,95,96,96,92,88,84,80,76,83,79,80,75,74,79,78,79,75,65,78,90,87,60,60,60,60,60,60,60,60,60,60,40,30,25,25,25,
Azerbaijan,WB_LMI,EUR,98,98,98,98,98,94,92,89,85,79,75,69,67,67,67,66,68,67,68,67,66,65,64,60,49,52,,,,,,,,,,,,
У меня есть это как набор данных, и я хочу знать, могу ли я напечатать все страны, уровень World_Bank_Income_Level которых равен = WB_LI
Я использую pandas, и когда я помещаю CSV-файл в dataframe, даже когда я пытаюсь выполнить цикл и найти страны с этой спецификацией, я в конечном итоге выводю весь CSV-файл целиком. Я не нашел никакого способа заставить его отображать страны только с этой спецификацией. Я думаю, мне нужно было бы создать dataframe и добавить страны, в которых это условие содержит только, но я не уверен, правильно ли это или как это сделать.
Итак, как я могу отобразить только определенные строки?
import pandas as pd
import matplotlib.pyplot as plt
import csv
measles = pd.read_csv('measles.csv')
df = pd.DataFrame(measles)
print(df)
ax = plt.gca()
df.plot(kind='bar',x='Country',y='2017', color='red', ax=ax)
plt.show()
Комментарии:
1.
df[df['World_Bank_Income_Level' == 'WB_LI']]
это должно дать строки, гдеWorld_Bank_Income_Level
находитсяWB_LI
2. опубликуйте код, который вы пробовали, чтобы кто-нибудь мог вам помочь, есть ли какая-либо ошибка в коде. без кода это было бы невозможно
3. Спасибо, я здесь новичок. Что касается моего кода, я думал, что это будет бесполезно, потому что это даже не имеет смысла для меня прямо сейчас. Я буду иметь это в виду в следующий раз.
4. Обновление: Мне нужна помощь в построении графиков стран, где World_Bank_Income_Level равен WB_LI. Я понимаю, как получить к ним доступ, но нужно ли мне создавать новый фрейм данных, чтобы отображать только их. Я хочу отобразить столбец «Страна» и «2017», но только для этих стран.
5. это зависит от вашего варианта использования. но назначение новому фрейму данных простое
df2 = df[df['World_Bank_Income_Level'] == 'WB_LI']
, тогда вы можете использоватьdf2.plot(...)
Ответ №1:
Нет необходимости создавать для этого новый фрейм данных, просто дайте значение новой переменной, например wb_country = df[df[‘World_Bank_Income_Level’] == ‘WB_LI’], если вам нужно более одного условия, вы можете попробовать df[(df [‘World_Bank_Income_Level’] == ‘WB_LI’) amp; (то, что вам нужно)]