ππ ΠΡΠ°ΡΠΈΠΊΠΈ Π² Python: 9 Π²ΠΈΠ΄ΠΎΠ² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ², ΡΠΏΠΎΡΠΎΠ±Π½ΡΡ Π΄ΠΎΠ½Π΅ΡΡΠΈ ΠΈΠ΄Π΅Ρ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΠΏΡΠΈΠ²ΡΡΠ½ΠΎΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΠ²ΠΈΡΠ΅ Π΄Π΅Π²ΡΡΡ ΠΈΠ΄Π΅ΠΉ (Ρ ΠΊΠΎΠ΄ΠΎΠΌ), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ, Π½ΠΎ ΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° β ΡΡΠΎ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΠΊ Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΡΠΎΠ»Π±ΡΠ°ΠΌΠΈ ΠΏΠΎ ΠΎΡΠΈ X ΠΈΠ»ΠΈ Y. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ ΡΡΠΎΠ»Π±ΡΡ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌ, ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ Π²ΡΡΠΎΡΡ ΠΈΠ»ΠΈ ΡΠΈΡΠΈΠ½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ Π½Π΅ΡΡΡΠ΄Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , ΡΠ°ΠΊΠΈΡ , ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ²Π»Π΅ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΠΈ ΠΊ Π΄Π°Π½Π½ΡΠΌ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΉ. ΠΠ½ΠΎΠ³Π΄Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ ΡΠΊΡΡΠ½ΠΎΠΉ.
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΎΠ² Π³ΡΠ°ΡΠΈΠΊΠΎΠ². ΠΡΠ° ΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π΄Π΅Π²ΡΡΡ ΠΈΠ΄Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ, Π½ΠΎ ΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π¦Π΅Π»ΡΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΠΎΡΠΎΡΠΈΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΆΠ΄ΡΠΉ Π²ΠΈΠ΄ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°. ΠΡΠ° ΡΡΠ°ΡΡΡ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ Π²ΠΈΠ΄Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΎΠ½ΠΈ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½Ρ β ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ Π΄Π΅Π»Ρ.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π‘ΠΏΠΈΡΠΊΠ° ΡΡΡΠ°Π½ ΠΏΠΎ Π²ΡΠ±ΡΠΎΡΠ°ΠΌ ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π° ΠΈΠ· ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ. ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ² ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΈΡ Π²ΡΠ±ΡΠΎΡΡ ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π° Π² 2018 Π³ΠΎΠ΄Ρ.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ ΠΈΠ· ΡΡΠ°ΡΡΠΈ Β«ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° β ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π² DataFrameΒ»:
import requests from bs4 import BeautifulSoup wikiurl='https://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions' table_class='wikitable sortable jquery-tablesorter' response=requests.get(wikiurl) #status 200: Π‘Π΅ΡΠ²Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΠ» Π½Π° Π·Π°ΠΏΡΠΎΡ http print(response.status_code)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ BeautifulSoup Π΄Π»Ρ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ :
soup = BeautifulSoup(response.text, 'html.parser') table = soup.find('table',{'class':"wikitable"}) df2018 = pd.read_html(str(table))[0] df2018
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ Π²ΡΠ±Π΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΡΠΎΠ»Π±Π΅Ρ, Β«ΠΡΠ±ΡΠΎΡΡ ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π° Π² 2018 / ΠΠ±ΡΠΈΠ΅, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π·Π΅ΠΌΠ΅Π»Ρ ΠΈ Π»Π΅ΡΠ½ΠΎΠ³ΠΎ Ρ ΠΎΠ·ΡΠΉΡΡΠ²Π°Β» ΠΈ ΠΎΡΡΠΈΠ»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½Ρ Ρ Π²ΡΠ±ΡΠΎΡΠ°ΠΌΠΈ ΠΎΡ 200 Π΄ΠΎ 1000 MTCO2e (ΠΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ½Π½ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π°).
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π²ΡΠ±ΡΠΎΡΠΎΠ² CO2.
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ emi_ = df2018[('2018 CO2 emissions[21]', 'Total excluding LUCF[23]')] country_ = list(df2018[('Country[20]', 'Country[20]')]) country_mod = [i.replace('\xa0',' ') for i in country_] # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ DataFrame df = pd.DataFrame(zip(country_mod,emi_), columns = ['countries', 'emission_2018']) # Π£Π±ΠΈΡΠ°Π΅ΠΌ ΡΡΡΠΎΠΊΡ ΠΎ ΡΡΡΠ°Π½Π΅, ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ df = df[df['countries']!='Serbia & Montenegro'] df.iloc[:,1] = df.iloc[:,1].astype('float') df = df[(df['emission_2018']>200) & (df['emission_2018']<1000)] df['percentage'] = [i*100/sum(df['emission_2018']) for i in df['emission_2018']] df.head(9)
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ DataFrame ΠΌΡ ΠΎΡΡΠΎΡΡΠΈΡΡΠ΅ΠΌ Π²ΡΠ±ΡΠΎΡΡ ΡΠ³Π»Π΅ΠΊΠΈΡΠ»ΠΎΠ³ΠΎ Π³Π°Π·Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½ΠΎΠ²ΡΡ DataFrame. ΠΠ±Π° DataFrame, ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ, Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ·ΠΆΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΠΊΠΈ. ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΄Π²Π° DataFrame Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ.
df_s = df.sort_values(by='emission_2018', ascending=False) df_s.head(9)
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Π³ΠΎΡΠΎΠ²ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠΈΡΡΠ΅ΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
plt.figure(figsize=(15,6.5)) sns.set_style('darkgrid') g = sns.barplot(data=df, x='countries', y='emission_2018', ci=False, palette='viridis_r') g.set_xticklabels(df['countries'], rotation=55, fontdict={'fontsize':10}) plt.show()
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ²Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
def get_color(name, number): pal = list(sns.color_palette(palette=name, n_colors=number).as_hex()) return pal
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΡΠ²Π΅ΡΠΎΠ²:
pal_vi = get_color('viridis_r', len(df)) pal_plas = get_color('plasma_r', len(df)) pal_spec = get_color('Spectral', len(df)) pal_hsv = get_color('hsv', len(df))
ΠΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ 9 Π²ΠΈΠ΄ΠΎΠ² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π΄Π²Π΅ Π³ΡΡΠΏΠΏΡ: ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ²:
- ΠΡΡΠ³ΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- Π Π°Π΄ΠΈΠ°Π»ΡΠ½Π°Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
- ΠΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- ΠΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌ:
- Π‘Π΅ΠΊΡΠΎΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- ΠΠ΅ΠΏΠ΅ΡΡΠΊΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- ΠΡΠ·ΡΡΡΠΊΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°
- Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΡΡΠ³ΠΎΠ²
1. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΡΡΠ³ΠΎΠ²ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ (ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΉ ΠΊΠ°ΠΊ ΠΠΎΠ½ΠΎΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°)
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΡΡΠ³ΠΎΠ²ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Β«Π·Π°ΠΊΡΡΡΠΊΠ΅Β» ΡΡΠΎΠ»Π±ΡΠΎΠ² Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅Π½ΡΡΠ° ΠΊΡΡΠ³Π°. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ Π³ΡΠ°Π΄ΡΡΠ° ΠΈ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΡΡΠ³Π°.
ΠΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π·ΡΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΡΠΎΠ»Π±ΡΡ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ Π½Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΊΡΡΠ³Π°, ΡΡΡΠ΄Π½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π΄Π»ΠΈΠ½Π° ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°: ΡΡΠΎΠ»Π±ΡΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΡΠ΅Π½ΡΡΡ ΠΊΡΡΠ³Π°, ΠΊΠΎΡΠΎΡΠ΅ ΡΡΠΎΠ»Π±ΡΠΎΠ², Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π΄Π°Π»ΡΡΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠΈΡΡΠ΅ΠΌ ΠΡΡΠ³ΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ DataFrame.
import math plt.gcf().set_size_inches(12, 12) sns.set_style('darkgrid') # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ max_val = max(df['emission_2018'])*1.01 ax = plt.subplot(projection='polar') # ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ax.set_theta_zero_location('N') ax.set_theta_direction(1) ax.set_rlabel_position(0) ax.set_thetagrids([], labels=[]) ax.set_rgrids(range(len(df)), labels= df['countries']) # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ax = plt.subplot(projection='polar') for i in range(len(df)): ax.barh(i, list(df['emission_2018'])[i]*2*np.pi/max_val, label=list(df['countries'])[i], color=pal_vi[i]) plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()
ΠΠ°ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠ³ΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ DataFrame.
import math plt.gcf().set_size_inches(12, 12) sns.set_style('darkgrid') # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ max_val = max(df_s['emission_2018'])*1.01 ax = plt.subplot(projection='polar') for i in range(len(df)): ax.barh(i, list(df_s['emission_2018'])[i]*2*np.pi/max_val, label=list(df_s['countries'])[i], color=pal_plas[i]) # ΠΠ°Π΄Π°Π΄ΠΈΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ ax.set_theta_zero_location('N') ax.set_theta_direction(1) ax.set_rlabel_position(0) ax.set_thetagrids([], labels=[]) ax.set_rgrids(range(len(df)), labels= df_s['countries']) # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡ ax = plt.subplot(projection='polar') plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()
2. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΠΎΡ ΡΠ΅Π½ΡΡΠ° β Π Π°Π΄ΠΈΠ°Π»ΡΠ½Π°Ρ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅ Π½Π°ΡΠΈ ΡΡΠΎΠ»Π±ΡΡ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ»Π±Π΅Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΎΡ ΡΠ΅Π½ΡΡΠ° ΠΊΡΡΠ³Π° ΠΈ Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ ΠΊΡΠ°Ρ ΠΊΡΡΠ³Π°.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΡΠΎΠ»Π±ΡΡ, Π½Π΅ Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ ΡΡΠ΄ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ. ΠΠ΅ΡΠΊΠΈ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΡΠ°Π·Π½ΡΠΌ ΡΠ³Π»ΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ Π·ΡΠΈΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΡΠΈΡΡΠ΅ΠΌ Π Π°Π΄ΠΈΠ°Π»ΡΠ½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ DataFrame.
plt.figure(figsize=(12,12)) ax = plt.subplot(111, polar=True) plt.axis() # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ lowerLimit = 0 max_v = df['emission_2018'].max() # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ heights = df['emission_2018'] width = 2*np.pi / len(df.index) # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΡΠ³ΠΎΠ» indexes = list(range(1, len(df.index)+1)) angles = [element * width for element in indexes] bars = ax.bar(x=angles, height=heights, width=width, bottom=lowerLimit, linewidth=1, edgecolor="white", color=pal_vi) labelPadding = 15 for bar, angle, height, label in zip(bars,angles, heights, df['countries']): rotation = np.rad2deg(angle) alignment = "" # Π Π°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ if angle >= np.pi/2 and angle < 3*np.pi/2: alignment = "right" rotation = rotation + 180 else: alignment = "left" ax.text(x=angle, y=lowerLimit + bar.get_height() + labelPadding, s=label, ha=alignment, va='center', rotation=rotation, rotation_mode="anchor") ax.set_thetagrids([], labels=[]) plt.show()
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈΡΡΠ΅ΠΌ ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ DataFrame
plt.figure(figsize=(12,12)) ax = plt.subplot(111, polar=True) plt.axis() # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ lowerLimit = 0 max_v = df_s['emission_2018'].max() # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ heights = df_s['emission_2018'] width = 2*np.pi / len(df_s.index) # Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ ΡΠ³ΠΎΠ» indexes = list(range(1, len(df_s.index)+1)) angles = [element * width for element in indexes] bars = ax.bar(x=angles, height=heights, width=width, bottom=lowerLimit, linewidth=1, edgecolor="white", color=pal_plas) labelPadding = 15 for bar, angle, height, label in zip(bars,angles, heights, df_s['countries']): rotation = np.rad2deg(angle) alignment = "" # Π Π°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ if angle >= np.pi/2 and angle < 3*np.pi/2: alignment = "right" rotation = rotation + 180 else: alignment = "left" ax.text(x=angle, y=lowerLimit + bar.get_height() + labelPadding, s=label, ha=alignment, va='center', rotation=rotation, rotation_mode="anchor") ax.set_thetagrids([], labels=[]) plt.show()
3. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π² Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅
ΠΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π½Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ, ΠΌΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠΊΠ°Π·Π°Π² ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΡΠΎΠ²Π΅Π½Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ.
ΠΡΠΈ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΠ±ΡΠ²Π°Π½ΠΈΡ β ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΠ°ΠΌΡΠ΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Plotly.
import plotly.express as px fig = px.treemap(df, path=[px.Constant('Countries'), 'countries'], values=df['emission_2018'], color=df['emission_2018'], color_continuous_scale='Spectral_r', color_continuous_midpoint=np.average(df['emission_2018']) ) fig.update_layout(margin = dict(t=50, l=25, r=25, b=25)) fig.show()
4. Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΈΠ· ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ²
ΠΠ°ΡΠ΅Π»ΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π΅Ρ Π·Π°Π±Π°Π²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΠΊΠΎΠ², Π²ΠΌΠ΅ΡΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡΡΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ β ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π° Π²Π°ΡΠ»Ρ.
ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ°ΠΌΠΈ 10*10, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ°. ΠΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠΈΠΌ, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π»ΠΎ Π΄Π°Π½Π½ΡΠΌ.
ΠΠ°ΡΠΈΡΡΠ΅ΠΌ Π²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΡΠ±ΡΠΎΡΡ CO2 Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½Ρ.
#!pip install pywaffle from pywaffle import Waffle fig = plt.figure(FigureClass=Waffle, rows=20, columns=50, values=list(df_s['emission_2018']), colors=pal_spec, labels=[i+' '+format(j, ',') for i,j in zip(df_s['countries'], df_s['emission_2018'])], figsize = (15,6), legend={'loc':'upper right', 'bbox_to_anchor': (1.26, 1) }) plt.tight_layout() plt.show()
ΠΡΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ²Π΅ΡΠ½ΡΠΌ ΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΎΡΡΠ΅Π½ΠΊΠΈ ΡΠ²Π΅ΡΠΎΠ². ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΡΡΠ°Π½Ρ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ, ΠΏΡΠΎΡΠΈΠ² Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΎΠ±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠ»Π»Π°ΠΆ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ Π³ΡΠ°ΡΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° Π²Π°Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ°. ΠΠ°ΡΠΈΡΡΠ΅ΠΌ Π²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½Ρ.
save_name = [] for i,p,n,c in zip(df_s['emission_2018'], df_s['percentage'], df_s['countries'], pal_hsv): fig = plt.figure(FigureClass=Waffle, rows=10, columns=20, values=[i, sum(df_s['emission_2018'])-i], colors=[c,'gainsboro'], labels=[n + ' ' + str(round(p,1)) +' %','Other countries'], figsize = (8,8), legend={'loc':'upper right', 'bbox_to_anchor': (1, 1), 'fontsize':24} ) save_name.append('waffle_'+ n + '.png') plt.tight_layout() plt.savefig('waffle_'+ n + '.png', bbox_inches='tight') #export_fig plt.show()
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ Π²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠ°Π½Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΡΠΎΠΊΠΎΠ»Π»Π°ΠΆΠ°. Π― Π½Π°ΡΠ΅Π» ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π½Π° StackOverflow (ΡΡΡΠ»ΠΊΠ°):
from PIL import Image def get_collage(cols_n, rows_n, width, height, input_sname, save_name): c_width = width//cols_n c_height = height//rows_n size = c_width, c_height new_im = Image.new('RGB', (width, height)) ims = [] for p in input_sname: im = Image.open(p) im.thumbnail(size) ims.append(im) i, x, y = 0,0,0 for col in range(cols_n): for row in range(rows_n): print(i, x, y) try: new_im.paste(ims[i], (x, y)) i += 1 y += c_height except IndexError: pass x += c_width y = 0 new_im.save(save_name)
ΠΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΡΠΎΠΊΠΎΠ»Π»Π°ΠΆ.
# Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠΎΠΊΠΎΠ»Π»Π°ΠΆ: # width = number of columns * figure width # height = number of rows * figure height get_collage(5, 5, 2840, 1445, save_name, 'Collage_waffle.png')
5. ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅ΠΌ, Π½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ ΠΈΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π»ΡΠ±ΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ Π²Π°Ρ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ. Plotly β ΡΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΡΡΠΎ Π½Π°ΡΡΠΈΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΡΡ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
import plotly.express as px fig = px.bar(df, x='countries', y='emission_2018', text='emission_2018', color ='countries', color_discrete_sequence=pal_vi) fig.update_traces(texttemplate='%{text:.3s}', textposition='outside') fig.update_layout({'plot_bgcolor': 'white', 'paper_bgcolor': 'white'}) fig.update_layout(width=1100, height=500, margin = dict(t=15, l=15, r=15, b=15)) fig.show()
6. ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅Π½ΡΡ Π² ΡΠ΅ΠΊΡΠΎΡΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅
Π‘Π΅ΠΊΡΠΎΡΠ½Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° β ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ Π²ΠΈΠ΄ Π³ΡΠ°ΡΠΈΠΊΠ° Π² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΊΡΡΠ³ΠΎΠΎΠ±ΡΠ°Π·Π½ΡΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³ΡΠ°ΡΠΈΠΊ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π½Π° ΡΠ΅ΠΊΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ. ΠΠ±ΡΡΠ½ΡΡ ΡΠ΅ΠΊΡΠΎΡΠ½ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ΅ΠΊΡΠΎΡΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Plotly.
import plotly.express as px fig = px.pie(df_s, values='emission_2018', names='countries', color ='countries', color_discrete_sequence=pal_vi) fig.update_traces(textposition='inside', textinfo='percent+label', sort=False) fig.update_layout(width=1000, height=550) fig.show()
7. Π§Π΅ΡΡΠΈΠΌ ΠΠ΅ΠΏΠ΅ΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²Π½ΡΡΡΠΈ ΠΊΡΡΠ³Π°
ΠΠ΅ΠΏΠ΅ΡΡΠΊΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° β ΡΡΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π»Π΅ΠΏΠ΅ΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΡΠΈΡΡΡΡ ΠΎΡ ΡΠ΅Π½ΡΡΠ°.
ΠΡΠ»ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΎ, Π·ΡΠΈΡΠ΅Π»ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½Π΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΡΠ΄ΠΎΠΌ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΠΈΡΡΡ Π»Π΅ΠΏΠ΅ΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈ ΡΡΠΎΠΌ Π·ΡΠΈΡΠ΅Π»ΠΈ ΡΠΌΠΎΠ³ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠΎΡΠΈΡ .
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠΈΡΡΠ΅ΠΌ Π»Π΅ΠΏΠ΅ΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ DataFrame.
import plotly.express as px fig = px.line_polar(df, r='emission_2018', theta='countries', line_close=True) fig.update_traces(fill='toself', line = dict(color=pal_spec[5])) fig.show()
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈΡΡΠ΅ΠΌ Π»Π΅ΠΏΠ΅ΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ DataFrame
import plotly.express as px fig = px.line_polar(df_s, r='emission_2018', theta='countries', line_close=True) fig.update_traces(fill='toself', line = dict(color=pal_spec[-5])) fig.show()
8. ΠΡΠ·ΡΡΡΠΊΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°: ΠΌΠ½ΠΎΠ³ΠΎ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡΡΠΆΠΊΠΎΠ²
Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠ·ΡΡΡΠΊΠΎΠ²Π°Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° β ΡΡΠΎ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΡΠ΅ΡΠ½ΠΈΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠΎΡΠ΅ΠΊ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π³ΡΠ°ΡΠΈΠΊ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ : X, Y ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠΎΡΠ΅ΠΊ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠ·ΡΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ Π½ΠΈΡ Π½Π΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ X ΠΈ Y, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΊΡΡΠΆΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Ρ ΠΎΡΠΈΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΡΡΠΆΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ X, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Y ΠΈ ΠΌΠ΅ΡΠΎΠΊ. ΠΠ°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠΎΠ»Π±ΡΠΎΠ² DataFrame. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΡΡΠΆΠΊΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΠΌΠ΅Π½ΡΠΉΡΠ΅ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² X ΠΈ Y.
# Π‘ΡΠΎΠ»Π±ΡΡ ΠΏΠΎ ΠΎΡΡΠΌ X ΠΈ Y df_s['X'] = [1]*len(df_s) list_y = list(range(0,len(df_s))) list_y.reverse() df_s['Y'] = list_y # Π‘ΡΠΎΠ»Π±Π΅Ρ ΠΌΠ΅ΡΠΎΠΊ df_s['labels'] = ['<b>'+i+'<br>'+format(j, ",") for i,j in zip(df_s['countries'], df_s['emission_2018'])] df_s
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡ ΠΏΡΠ·ΡΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ.
import plotly.express as px fig = px.scatter(df_s, x='X', y='Y', color='countries', color_discrete_sequence=pal_vi, size='emission_2018', text='labels', size_max=30) fig.update_layout(width=500, height=1100, margin = dict(t=0, l=0, r=0, b=0), showlegend=False ) fig.update_traces(textposition='middle right') fig.update_xaxes(showgrid=False, zeroline=False, visible=False) fig.update_yaxes(showgrid=False, zeroline=False, visible=False) fig.update_layout({'plot_bgcolor': 'white', 'paper_bgcolor': 'white'}) fig.show()
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΏΡΠ·ΡΡΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΠ°Ρ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΈΡ ΠΏΠΎ ΠΊΡΡΠ³Ρ.
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X ΠΈ Y. ΠΠ°ΡΠ½Π΅ΠΌ Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ 360 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X ΠΈ Y ΠΈΠ· Π³ΡΠ°Π΄ΡΡΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΠ½ΡΡΠ° ΠΈ ΠΊΠΎΡΠΈΠ½ΡΡΠ°.
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ X ΠΈ Y ΠΏΠΎ ΠΊΡΡΠ³Ρ e = 360/len(df) degree = [i*e for i in list(range(len(df)))] df_s['X_coor'] = [math.cos(i*math.pi/180) for i in degree] df_s['Y_coor'] = [math.sin(i*math.pi/180) for i in degree] df_s
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΠ·ΡΡΡΠΊΠΎΠ²ΡΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ ΠΊΡΡΠ³Ρ.
import plotly.express as px fig = px.scatter(df_s, x='X_coor', y='Y_coor', color="countries", color_discrete_sequence=pal_vi, size='emission_2018', text='labels', size_max=40) fig.update_layout(width=800, height=800, margin = dict(t=0, l=0, r=0, b=0), showlegend=False ) fig.update_traces(textposition='bottom center') fig.update_xaxes(showgrid=False, zeroline=False, visible=False) fig.update_yaxes(showgrid=False, zeroline=False, visible=False) fig.update_layout({'plot_bgcolor': 'white', 'paper_bgcolor': 'white'}) fig.show()
ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΠΌ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΌΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ ΠΏΡΠ·ΡΡΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΎΠ½ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ. ΠΠ΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠ·ΡΡΡΠΊΠΎΠ²ΡΠ΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ.
9. Π Π°Π·ΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΡΠ·ΡΡΠΈ Ρ Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΎΠΉ ΠΊΡΡΠ³Π°
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ ΠΏΡΠ·ΡΡΠΈ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΠΉ. Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΊΡΡΠ³Π° β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ·ΡΡΠ΅ΠΉ, Π½Π΅ ΡΡΠ°ΡΡ Π»ΠΈΡΠ½Π΅Π³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ·ΡΡΡ. Π ΡΡΠ°ΡΡΡΡ, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° circlify, Π΄Π΅Π»Π°ΡΡΠ°Ρ ΡΡΠΈ ΡΠ°ΡΡΠ΅ΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΊΡΡΠ³Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ΄Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΡΡΠ³Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ°Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΡΡΠ³ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
import circlify # Π Π°ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΠ³ΠΎΠ²: circles = circlify.circlify(df_s['emission_2018'].tolist(), show_enclosure=False, target_enclosure=circlify.Circle(x=0, y=0) ) circles.reverse()
ΠΠ°ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠ³, ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΡΡΠ³Π°ΠΌΠΈ.
fig, ax = plt.subplots(figsize=(14, 14), facecolor='white') ax.axis('off') lim = max(max(abs(circle.x)+circle.r, abs(circle.y)+circle.r,) for circle in circles) plt.xlim(-lim, lim) plt.ylim(-lim, lim) # Π ΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠ³ΠΈ for circle, label, emi, color in zip(circles, df_s['countries'], df_s['emission_2018'], pal_vi): x, y, r = circle ax.add_patch(plt.Circle((x, y), r, alpha=0.9, color = color)) plt.annotate(label +'\n'+ format(emi, ","), (x,y), size=15, va='center', ha='center') plt.xticks([]) plt.yticks([]) plt.show()
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ. ΠΠ½ΠΈ ΠΏΡΠΎΡΡΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ, ΠΈ ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΠ΄Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»Π΅ΠΉ. ΠΠ½ΠΎΠ³Π΄Π° Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Ρ ΡΠ΅Π»ΡΡ ΠΏΡΠΈΠ²Π»Π΅ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ½ΡΠΎΠ³ΡΠ°ΡΠΈΠΊΠΈ, ΠΈ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π΄Π΅Π²ΡΡΡ Π²ΠΈΠ΄ΠΎΠ² Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΡΡΡΠΎΠΈΠ»ΠΈ Π³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ. Π£ ΡΡΠΈΡ Π²ΠΈΠ΄ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. ΠΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π½Π΅ Π³ΠΎΠ΄ΠΈΡΡΡΡ Π΄Π»Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΡΠ΅ΡΠ°.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
- ππ ΠΠ°ΠΊ Β«ΠΎΠΆΠΈΠ²Π»ΡΡΡΒ» Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡ Π²ΡΠ΅Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python
- ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π² Python Π·Π° 4 ΡΠ°Π³Π°
- ποΈ ΠΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python Π΄Π΅Π»Π°ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΈ