- " ... изменил классы на 0 - для одного класса и 1 - для другого класса"не требуется
import pandas as pd
import random
import matplotlib.pyplot as plt
import seaborn as sns
# data
random.seed(365)
data = {'class': [random.choice(['A.P. Economics - Macro', 'A.P. Economics - Micro']) for _ in range(100)],
'year': [random.choice([*range(2000, 2021)]) for _ in range(100)]}
# create dataframe
df = pd.DataFrame(data)
# groupby, count and transform back to dataframe
t = pd.DataFrame(df.groupby(['year', 'class'])['class'].count()).rename(columns={'class': 'count'}).reset_index(level=1)
class count
year
2000 A.P. Economics - Macro 1
2000 A.P. Economics - Micro 1
2001 A.P. Economics - Macro 2
2001 A.P. Economics - Micro 2
2002 A.P. Economics - Macro 3
2002 A.P. Economics - Micro 1
2003 A.P. Economics - Macro 3
2003 A.P. Economics - Micro 3
2004 A.P. Economics - Macro 4
2005 A.P. Economics - Macro 2
2005 A.P. Economics - Micro 1
2006 A.P. Economics - Macro 4
2006 A.P. Economics - Micro 1
2007 A.P. Economics - Micro 3
2008 A.P. Economics - Macro 3
2008 A.P. Economics - Micro 3
2009 A.P. Economics - Macro 2
2009 A.P. Economics - Micro 7
2010 A.P. Economics - Macro 5
2010 A.P. Economics - Micro 2
2011 A.P. Economics - Macro 4
2011 A.P. Economics - Micro 3
2012 A.P. Economics - Macro 1
2012 A.P. Economics - Micro 6
2013 A.P. Economics - Macro 2
2013 A.P. Economics - Micro 3
2014 A.P. Economics - Macro 5
2014 A.P. Economics - Micro 3
2015 A.P. Economics - Macro 1
2015 A.P. Economics - Micro 2
2016 A.P. Economics - Macro 3
2016 A.P. Economics - Micro 4
2017 A.P. Economics - Macro 2
2017 A.P. Economics - Micro 1
2018 A.P. Economics - Macro 2
2018 A.P. Economics - Micro 2
2019 A.P. Economics - Micro 1
2020 A.P. Economics - Micro 2
Гистограмма с морскими породами
sns.barplot(x=t.index, y='count', data=t, hue='class')
plt.xticks(rotation=90)
plt.legend(loc='upper right')
plt.show()
Линейный график
- Однако это не оптимальный способ представления этих данных.
- Создается впечатление, что данные непрерывны, когда они скрыты.
- Это беспорядочно
- Это не ясно передает информацию, которая является количеством вхождений класса в данном году.
- Год интерпретируется как целое число, а не как дата-время.
sns.lineplot(x=t.index, y='count', data=t, hue='class')
plt.xticks(rotation=90)
plt.legend(loc='upper right')
plt.show()