import pandas as pd
# Загружаем данные, выбирая только нужные столбцы
un_roll_call_issues = pd.read_csv('un_roll_call_issues.csv', usecols=['rcid', 'issue'])
un_roll_calls = pd.read_csv('un_roll_calls.csv', usecols=['rcid', 'session', 'date'])
un_votes = pd.read_csv('un_votes.csv', usecols=['rcid', 'country', 'vote'])
# Объединяем датафреймы в одну цепочку
# Сначала un_roll_call_issues с un_roll_calls
# Затем результат с un_votes
UN = un_roll_call_issues.merge(un_roll_calls, on='rcid') \
.merge(un_votes, on='rcid')
g20_members =[
"Argentina", "Australia", "Brazil", "Canada", "China",
"France", "Germany", "India", "Indonesia", "Italy",
"Japan", "Mexico", "Russia", "Saudi Arabia", "South Africa",
"South Korea", "Turkey", "United Kingdom", "United States"
]
G20 = UN.query("country in @g20_members")
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index()
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index().plot()
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index().plot(x='issue',
rot=45, figsize=(10,5))
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index().plot(x='issue',
rot=45, figsize=(10,5), xlabel=Укрупненная повестка',
ylabel='Кол-во упоминаний', legend=False)
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index().plot(x='issue',
rot=45, figsize=(10,5), xlabel='Укрупненная повестка',
ylabel='Кол-во упоминаний', legend=False, ylim=(0,1100))
G20.groupby('issue').agg({'rcid':'nunique'}).reset_index().plot(x='issue',
rot=45, figsize=(10,5), xlabel='Укрупненная повестка',
ylabel='Кол-во упоминаний', legend=False, kind='bar')
# Импорт библиотеки matplotlib
import matplotlib.pyplot as plt
# Фильтрация данных и сохранение результата в новую переменную
G20_abstain = G20.query('vote == "abstain"')
# Подсчет количества голосований типа «воздержался» по странам
abstain_counts = G20_abstain['country'].value_counts()
# Создание круговой диаграммы
plt.figure(figsize=(10, 8))
plt.pie(abstain_counts, labels=abstain_counts.index,
autopct='%1.1f%%', startangle=140)
plt.title('Соотношение стран по кол-ву воздержавшихся', pad=20)
# Чтобы диаграмма была круглой
plt.axis('equal')
# Демонстрация круговой диаграммы
plt.show()
import seaborn as sns
G20_abstain['date'] = pd.to_datetime(G20_abstain['date'])
G20_abstain['year'] = G20_abstain['date'].dt.year
# Фильтрация данных по рассматриваемой стране
Russia_abstain = G20_abstain.query('country = "Russia"')
# Группировка данных по году и повестке; подсчет количества голосов
votes_by_year_issue = Russia_abstain.groupby(['year', 'issue']).size().
reset_index(name='count')
# Создание диаграммы рассеивания
plt.figure(figsize=(12, 8))
sns.scatterplot(data=votes_by_year_issue, x='year', y='count', hue='issue',
palette='viridis', s=100)
# Настройка параметров диаграммы рассеивания
plt.xlabel('Год', fontsize=14)
plt.ylabel('Количество голосов', fontsize=14)
plt.legend(title='Вопрос', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
# Демонстрация диаграммы рассеивания
plt.show()