In [1]:
import pandas as pd
In [2]:
df = pd.read_csv('city.csv', sep=';')
df
Out[2]:
ID Name CountryCode District Population
0 1 Kabul AFG Kabol 1780000
1 2 Qandahar AFG Qandahar 237500
2 3 Herat AFG Herat 186800
3 4 Mazar-e-Sharif AFG Balkh 127800
4 5 Amsterdam NLD Noord-Holland 731200
... ... ... ... ... ...
4074 4075 Khan Yunis PSE Khan Yunis 123175
4075 4076 Hebron PSE Hebron 119401
4076 4077 Jabaliya PSE North Gaza 113901
4077 4078 Nablus PSE Nablus 100231
4078 4079 Rafah PSE Rafah 92020

4079 rows × 5 columns

In [8]:
df[ df.CountryCode == 'AFG' ]['Population'].sum()
Out[8]:
2332100
In [11]:
df.groupby('CountryCode').sum()['Population']
Out[11]:
CountryCode
ABW       29034
AFG     2332100
AGO     2561600
AIA        1556
ALB      270000
         ...   
YEM     1743700
YUG     2189507
ZAF    15196370
ZMB     2473500
ZWE     2730420
Name: Population, Length: 232, dtype: int64
In [12]:
df.groupby('CountryCode').sum()
Out[12]:
ID Population
CountryCode
ABW 129 29034
AFG 10 2332100
AGO 290 2561600
AIA 123 1556
ALB 34 270000
... ... ...
YEM 10695 1743700
YUG 14364 2189507
ZAF 32274 15196370
ZMB 22155 2473500
ZWE 24423 2730420

232 rows × 2 columns

In [14]:
df.groupby('CountryCode').agg(['min', 'max', 'mean', 'sum', 'count']).head()
Out[14]:
ID Population
min max mean sum count min max mean sum count
CountryCode
ABW 129 129 129.0 129 1 29034 29034 29034.0 29034 1
AFG 1 4 2.5 10 4 127800 1780000 583025.0 2332100 4
AGO 56 60 58.0 290 5 118200 2022000 512320.0 2561600 5
AIA 61 62 61.5 123 2 595 961 778.0 1556 2
ALB 34 34 34.0 34 1 270000 270000 270000.0 270000 1
In [15]:
df.groupby('CountryCode').agg(['min', 'max', 'mean', 'sum', 'count'])['Population'].head()
Out[15]:
min max mean sum count
CountryCode
ABW 29034 29034 29034.0 29034 1
AFG 127800 1780000 583025.0 2332100 4
AGO 118200 2022000 512320.0 2561600 5
AIA 595 961 778.0 1556 2
ALB 270000 270000 270000.0 270000 1
In [16]:
df.groupby('CountryCode').agg(['min', 'max', 'mean', 'sum', 'count'])['Population'].reset_index().head()
Out[16]:
CountryCode min max mean sum count
0 ABW 29034 29034 29034.0 29034 1
1 AFG 127800 1780000 583025.0 2332100 4
2 AGO 118200 2022000 512320.0 2561600 5
3 AIA 595 961 778.0 1556 2
4 ALB 270000 270000 270000.0 270000 1
In [ ]:
 
In [17]:
code_group = df.groupby('CountryCode')
code_group
Out[17]:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001ED1B744B50>
In [19]:
# for index, value in code_group:
#     print(index)
#     print(value)
In [22]:
code_group.get_group('AFG')
Out[22]:
ID Name CountryCode District Population
0 1 Kabul AFG Kabol 1780000
1 2 Qandahar AFG Qandahar 237500
2 3 Herat AFG Herat 186800
3 4 Mazar-e-Sharif AFG Balkh 127800
In [24]:
code_group.describe()['Population']
Out[24]:
count mean std min 25% 50% 75% max
CountryCode
ABW 1.0 29034.000000 NaN 29034.0 29034.00 29034.0 29034.00 29034.0
AFG 4.0 583025.000000 799241.458614 127800.0 172050.00 212150.0 623125.00 1780000.0
AGO 5.0 512320.000000 844105.862437 118200.0 128300.00 130000.0 163100.00 2022000.0
AIA 2.0 778.000000 258.801082 595.0 686.50 778.0 869.50 961.0
ALB 1.0 270000.000000 NaN 270000.0 270000.00 270000.0 270000.00 270000.0
... ... ... ... ... ... ... ... ...
YEM 6.0 290616.666667 155648.468244 103300.0 166425.00 308050.0 378125.00 503600.0
YUG 8.0 273688.375000 377226.883552 92303.0 126346.50 151400.5 176449.75 1204000.0
ZAF 44.0 345372.045455 366793.373731 89292.0 166479.00 232860.0 372345.00 2352121.0
ZMB 7.0 353357.142857 433110.412625 118100.0 133150.00 154300.0 308900.00 1317000.0
ZWE 6.0 455070.000000 503661.219871 128037.0 139615.75 219637.0 535034.50 1410000.0

232 rows × 8 columns

Homework

In [25]:
# Задание 1
# Сгруппировать данные по CountryCode
# получить максимум и минимум по Population
# взять первых 10 результатов
# нормализовать индексы полученного датафрейма
In [26]:
# Задание 2
# Сгруппировать данные по CountryCode
# получить разницу между максимум и минимум по Population
# взять первые 10 результатов
# на выходе получить именно датафрейм (не серию)
In [ ]: