In [1]:
# pip install xlrd
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
In [2]:
"""obcas se nam stane, ze potrebujeme zmenit hodnotu v Serii. Nez to delat rucne prvek po prvku, 
pandas nam poskytuje metodu replace. Ta nam vymeni vsechny vyskyty nami zvolenou hodnotou. 
Nejdrive si vytvorime jakoukoli serii, kde se nam opakuje par cisel"""
ser1 = Series([1,2,3,4,5,1,2,3,3,2])
ser1
Out[2]:
0    1
1    2
2    3
3    4
4    5
5    1
6    2
7    3
8    3
9    2
dtype: int64
In [3]:
"""pote zavolame metodu replace(co_nahrazujeme, cim_nahrazujeme). V tomto prikladu nahrazujeme 
vsechny vyskyty cisla 3 NaN hodnotou"""
ser1.replace(3, np.nan)
Out[3]:
0    1.0
1    2.0
2    NaN
3    4.0
4    5.0
5    1.0
6    2.0
7    NaN
8    NaN
9    2.0
dtype: float64
In [4]:
""" druha moznost jak pouzit metodu replace. Jako parametr predavame slovnik, kde key je to co chceme nahradit a value cim"""
ser1.replace({3:250, 1:1000})
Out[4]:
0    1000
1       2
2     250
3       4
4       5
5    1000
6       2
7     250
8     250
9       2
dtype: int64
In [5]:
"""Replace muzeme pouzit i u dataframe. Nejprve si vytvorime priklad"""
df_rep = DataFrame({'score':[70, 40, 90]}, index=['Petr', 'Jonas', 'Zuzana'],)
df_rep
Out[5]:
score
Petr 70
Jonas 40
Zuzana 90
In [6]:
# nyni zmenime score na VS znamku
df_rep.replace({70:'C'})
Out[6]:
score
Petr C
Jonas 40
Zuzana 90
In [7]:
# zkuste dokoncit samy - 70=C, 40=F, 90=A
df_rep.replace({70:'C', 40:'F', 90:'A'})
Out[7]:
score
Petr C
Jonas F
Zuzana A
In [8]:
# Zkuste zjistit, kteri studenti ziskali vice nez 50 bodu. Pote u tech co prosli vypiste Passed, a u tech co ne Failed
result = df_rep > 50
result.replace({True:'Passed', False:'Failed'})
Out[8]:
score
Petr Passed
Jonas Failed
Zuzana Passed
In [9]:
"""
Nyni si povime neco o merge metode. Dobre nam poslouzi v momente, kdy mame vice zdroju dat, ktere se k sobe nejakym zpusobem 
vazou a my bychom chteli tabulky sjednotit. V podstate je to dost podobne join z SQL. Nejprve si tedy vytvorime 3 data frames
"""
my_dict1 = {'key':['LA', 'SF', 'LV', 'NY'], 'inhabitants': [3.8, 0.8, 0.6, 8.4]}
df1 = DataFrame(my_dict1)
df1
Out[9]:
inhabitants key
0 3.8 LA
1 0.8 SF
2 0.6 LV
3 8.4 NY
In [10]:
my_dict2 = {'key':['SF', 'LV', 'W'], 'poi': [15, 16, 10]}
df2 = DataFrame(my_dict2)
df2
Out[10]:
key poi
0 SF 15
1 LV 16
2 W 10
In [11]:
# prunik mnozin - klice musi byt shodne
pd.merge(df1, df2)
Out[11]:
inhabitants key poi
0 0.8 SF 15
1 0.6 LV 16
In [12]:
my_dict3 = {'key':['Washington', 'Chicago'], 'poi': [15, 10]}
df3 = DataFrame(my_dict3)
df3
Out[12]:
key poi
0 Washington 15
1 Chicago 10
In [13]:
# prunik dle specifickeho sloupce
pd.merge(df2, df3, on="poi")
Out[13]:
key_x poi key_y
0 SF 15 Washington
1 W 10 Chicago
In [14]:
# pojmenovani pripon u shodnych sloupcu
pd.merge(df2, df3, on="poi", suffixes=('_left', '_right'))
Out[14]:
key_left poi key_right
0 SF 15 Washington
1 W 10 Chicago
In [15]:
# je mozne zde aplikovat neco co zname jiz z SQL = LEFT JOIN, RIGHT JOIN, OUTER JOIN
pd.merge(df1, df2, how="left")
Out[15]:
inhabitants key poi
0 3.8 LA NaN
1 0.8 SF 15.0
2 0.6 LV 16.0
3 8.4 NY NaN
In [16]:
# Zkuste si samy udelat outer merge df1 a df2 a zmente NaN hodnoty na 0
df_outer = pd.merge(df1, df2, how="outer")
df_outer.fillna(0)
Out[16]:
inhabitants key poi
0 3.8 LA 0.0
1 0.8 SF 15.0
2 0.6 LV 16.0
3 8.4 NY 0.0
4 0.0 W 10.0
In [17]:
# merge pokud pouzivame indexy (zde vidime, ze r je DF, ktery ma indexy a,b)
l = DataFrame({'key':['a', 'b', 'c', 'd'], 'data':range(4)})
r = DataFrame({'group_data':[10,20]}, index=['a', 'b'])

l
Out[17]:
data key
0 0 a
1 1 b
2 2 c
3 3 d
In [18]:
r
Out[18]:
group_data
a 10
b 20
In [19]:
pd.merge(l, r, left_on='key', right_index=True)
Out[19]:
data key group_data
0 0 a 10
1 1 b 20
In [20]:
#
In [21]:
df_left = DataFrame({'key1': ['SF', 'SF', 'SF', 'LA', 'LA'],
                     'key2': [10,20,20,30,30],
                     'data_set': [99, 94, 90, 11, 22]})
df_left
Out[21]:
data_set key1 key2
0 99 SF 10
1 94 SF 20
2 90 SF 20
3 11 LA 30
4 22 LA 30
In [22]:
# generovani DF, reshape nam rika na kolik radku,sloupcu ma rozdelit vysledek z arange. K tomuto nastaveni je treba 
# dodrzet dalsi parametrz = 5 indexy, ...

df_right = DataFrame(np.arange(10).reshape(5,2), index=[['LA', 'LA', 'SF', 'SF', 'SF'],
                           [20,10,10,10, 20]],
                           columns=['col_1','col_2'])
df_right
Out[22]:
col_1 col_2
LA 20 0 1
10 2 3
SF 10 4 5
10 6 7
20 8 9
In [23]:
# merge pres 2 klice
pd.merge(df_left, df_right, left_on=['key1', 'key2'], right_index=True)
Out[23]:
data_set key1 key2 col_1 col_2
0 99 SF 10 4 5
0 99 SF 10 6 7
1 94 SF 20 8 9
2 90 SF 20 8 9
In [24]:
# pivoting = kontingencni tabulky z excelu
# nacteme data z excelu
df = pd.read_excel("sales.xlsx")
df.head()
Out[24]:
Account Name Rep Manager Product Quantity Price Status
0 714466 Trantow-Barrows Craig Booker Debra Henley CPU 1 30000 presented
1 714466 Trantow-Barrows Craig Booker Debra Henley Software 1 10000 presented
2 714466 Trantow-Barrows Craig Booker Debra Henley Maintenance 2 5000 pending
3 737550 Fritsch, Russel and Anderson Craig Booker Debra Henley CPU 1 35000 declined
4 146832 Kiehn-Spinka Daniel Hilton Debra Henley CPU 2 65000 won
In [25]:
# vytvoreni pivotu
pd.pivot_table(df,index=["Manager","Rep"],values=["Price"])
Out[25]:
Price
Manager Rep
Debra Henley Craig Booker 20000
Daniel Hilton 38333
John Smith 20000
Fred Anderson Cedric Moss 27500
Wendy Yule 44250
In [26]:
# Zkuste vytvorit pivot ze zdroje, kde index bude Manager, Rep a Product a jako hodnoty chceme price a quantity
pd.pivot_table(df,index=["Manager","Rep","Product"],
               values=["Price","Quantity"])
Out[26]:
Price Quantity
Manager Rep Product
Debra Henley Craig Booker CPU 32500.0 1.0
Maintenance 5000.0 2.0
Software 10000.0 1.0
Daniel Hilton CPU 52500.0 2.0
Software 10000.0 1.0
John Smith CPU 35000.0 1.0
Maintenance 5000.0 2.0
Fred Anderson Cedric Moss CPU 47500.0 1.5
Maintenance 5000.0 1.0
Software 10000.0 1.0
Wendy Yule CPU 82500.0 3.5
Maintenance 7000.0 3.0
Monitor 5000.0 2.0
In [27]:
df_p = pd.DataFrame({
    'day':pd.date_range('20130101', periods=7),
    'var':['A', 'B', 'C', 'D', 'A', 'D', 'A'],
    'val':np.arange(7)})

df_p
Out[27]:
day val var
0 2013-01-01 0 A
1 2013-01-02 1 B
2 2013-01-03 2 C
3 2013-01-04 3 D
4 2013-01-05 4 A
5 2013-01-06 5 D
6 2013-01-07 6 A
In [28]:
df_piv = df_p.pivot('day', 'var', 'val')
df_piv
Out[28]:
var A B C D
day
2013-01-01 0.0 NaN NaN NaN
2013-01-02 NaN 1.0 NaN NaN
2013-01-03 NaN NaN 2.0 NaN
2013-01-04 NaN NaN NaN 3.0
2013-01-05 4.0 NaN NaN NaN
2013-01-06 NaN NaN NaN 5.0
2013-01-07 6.0 NaN NaN NaN
In [29]:
# Nahradte Nan value na zaporne cislo
df_piv.fillna(-1)
Out[29]:
var A B C D
day
2013-01-01 0.0 -1.0 -1.0 -1.0
2013-01-02 -1.0 1.0 -1.0 -1.0
2013-01-03 -1.0 -1.0 2.0 -1.0
2013-01-04 -1.0 -1.0 -1.0 3.0
2013-01-05 4.0 -1.0 -1.0 -1.0
2013-01-06 -1.0 -1.0 -1.0 5.0
2013-01-07 6.0 -1.0 -1.0 -1.0
In [30]:
# V SQL uz zname agregacni funkce, co za nas mohou neco vypocitat. I to nam umoznuje pandas
# nejprve nacteme pripraveny csv soubor
df_wine = pd.read_csv('wine-red.csv', sep=';')
df_wine.head(10)
Out[30]:
fixed acidity volatile acidity citric acid residual sugar chlorides free sulfur dioxide total sulfur dioxide density pH sulphates alcohol quality
0 7.4 0.70 0.00 1.9 0.076 11.0 34.0 0.9978 3.51 0.56 9.4 5
1 7.8 0.88 0.00 2.6 0.098 25.0 67.0 0.9968 3.20 0.68 9.8 5
2 7.8 0.76 0.04 2.3 0.092 15.0 54.0 0.9970 3.26 0.65 9.8 5
3 11.2 0.28 0.56 1.9 0.075 17.0 60.0 0.9980 3.16 0.58 9.8 6
4 7.4 0.70 0.00 1.9 0.076 11.0 34.0 0.9978 3.51 0.56 9.4 5
5 7.4 0.66 0.00 1.8 0.075 13.0 40.0 0.9978 3.51 0.56 9.4 5
6 7.9 0.60 0.06 1.6 0.069 15.0 59.0 0.9964 3.30 0.46 9.4 5
7 7.3 0.65 0.00 1.2 0.065 15.0 21.0 0.9946 3.39 0.47 10.0 7
8 7.8 0.58 0.02 2.0 0.073 9.0 18.0 0.9968 3.36 0.57 9.5 7
9 7.5 0.50 0.36 6.1 0.071 17.0 102.0 0.9978 3.35 0.80 10.5 5
In [31]:
# spocitame kolik procent alkoholu v prumeru obsahuji vzorky nasich vin
df_wine['alcohol'].mean()
Out[31]:
10.422983114446529
In [32]:
# prumerna kvalita vina
df_wine['quality'].mean()
Out[32]:
5.6360225140712945
In [33]:
# statisticke udaje o nasich hodnotach
df_wine.describe()
Out[33]:
fixed acidity volatile acidity citric acid residual sugar chlorides free sulfur dioxide total sulfur dioxide density pH sulphates alcohol quality
count 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000 1599.000000
mean 8.319637 0.527821 0.270976 2.538806 0.087467 15.874922 46.467792 0.996747 3.311113 0.658149 10.422983 5.636023
std 1.741096 0.179060 0.194801 1.409928 0.047065 10.460157 32.895324 0.001887 0.154386 0.169507 1.065668 0.807569
min 4.600000 0.120000 0.000000 0.900000 0.012000 1.000000 6.000000 0.990070 2.740000 0.330000 8.400000 3.000000
25% 7.100000 0.390000 0.090000 1.900000 0.070000 7.000000 22.000000 0.995600 3.210000 0.550000 9.500000 5.000000
50% 7.900000 0.520000 0.260000 2.200000 0.079000 14.000000 38.000000 0.996750 3.310000 0.620000 10.200000 6.000000
75% 9.200000 0.640000 0.420000 2.600000 0.090000 21.000000 62.000000 0.997835 3.400000 0.730000 11.100000 6.000000
max 15.900000 1.580000 1.000000 15.500000 0.611000 72.000000 289.000000 1.003690 4.010000 2.000000 14.900000 8.000000
In [34]:
phone = pd.read_csv('phone.csv')
phone.head(7)
Out[34]:
Datum Čas Typ hovoru Kam komu Počet jednotek Jednotka
0 01.05.2015 00:08:44 Mobilní internet internet.t-mobile.cz 7233 kB
1 01.05.2015 16:11:11 SMS ostatní sítě 212345678 1 ks
2 01.05.2015 19:16:37 SMS ostatní sítě 420777123456 1 ks
3 01.05.2015 19:19:56 Volání Vodafone 420777123456 94 s
4 01.05.2015 19:24:17 Volání O2 420723123456 1327 s
5 02.05.2015 00:00:00 Mobilní internet internet.t-mobile.cz 78554 kB
6 02.05.2015 13:19:41 Volání O2 420602123456 29 s
In [35]:
# kolik kB dat spotreboval vlastnik teto faktury?
phone[phone['Jednotka'] == 'kB']['Počet jednotek'].sum()
Out[35]:
6177360
In [36]:
# zkuste zjistit kolik sekund volal vlastnik faktury do site O2?
phone[phone['Typ hovoru'] == 'Volání O2']['Počet jednotek'].sum()
Out[36]:
1910
In [37]:
# kolik hovoru uskutecnil vlastnik faktury do site Vodafone?
# zde je jedno jaky sloupec vybereme, potrebujeme jen vysledek omezit na jeden sloupec
phone[phone['Typ hovoru'] == 'Volání Vodafone']['Datum'].count()
Out[37]:
5
In [38]:
# Sloupec Kam komu, kde byl uskutecnen nejdelsi hovor ci data
phone[phone['Počet jednotek'] == phone['Počet jednotek'].max()]['Kam komu']
Out[38]:
17    internet.t-mobile.cz
Name: Kam komu, dtype: object
In [39]:
# informace o nejdelsim hovoru
phone[phone['Jednotka'] == 's'].max()
Out[39]:
Datum                15.05.2015
Čas                    19:24:17
Typ hovoru        Volání zdarma
Kam komu           420800123456
Počet jednotek             1552
Jednotka                      s
dtype: object
In [40]:
"""
GROUPBY
Data muzeme sdruzovat a vytvaret pro nas dulezite statistiky. 
Pokud se ale pokusime o vypsani vysledku nedostaneme uplne to co bychom cekali.
"""

phone.groupby(['Typ hovoru'])
Out[40]:
<pandas.core.groupby.DataFrameGroupBy object at 0x1067d3c50>
In [41]:
for name, group in phone.groupby('Typ hovoru'):
    print("This is the {} group".format(name))
    print(group)
    print("\n")
This is the Mobilní internet group
         Datum       Čas        Typ hovoru              Kam komu  \
0   01.05.2015  00:08:44  Mobilní internet  internet.t-mobile.cz   
5   02.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
9   03.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
12  04.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
13  05.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
15  06.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
17  07.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
18  08.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
20  09.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
22  10.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
24  11.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
25  12.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
30  13.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
32  14.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
36  15.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
42  16.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   
43  17.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
0             7233       kB  
5            78554       kB  
9           263835       kB  
12           98254       kB  
13          134114       kB  
15           82599       kB  
17         2212521       kB  
18          110709       kB  
20          103662       kB  
22         1090003       kB  
24          358769       kB  
25           89394       kB  
30          348448       kB  
32          138930       kB  
36          874206       kB  
42          115198       kB  
43           70931       kB  


This is the SMS T-Mobile group
         Datum       Čas    Typ hovoru   Kam komu  Počet jednotek Jednotka
35  14.05.2015  14:11:21  SMS T-Mobile  736123456               1       ks


This is the SMS ostatní sítě group
         Datum       Čas        Typ hovoru      Kam komu  Počet jednotek  \
1   01.05.2015  16:11:11  SMS ostatní sítě     212345678               1   
2   01.05.2015  19:16:37  SMS ostatní sítě  420777123456               1   
38  15.05.2015  16:51:28  SMS ostatní sítě  420606123456               1   
39  15.05.2015  16:51:29  SMS ostatní sítě  420606123456               1   
40  15.05.2015  17:29:11  SMS ostatní sítě  420606123456               1   
41  15.05.2015  17:29:11  SMS ostatní sítě  420606123456               1   

   Jednotka  
1        ks  
2        ks  
38       ks  
39       ks  
40       ks  
41       ks  


This is the Volání O2 group
         Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
4   01.05.2015  19:24:17  Volání O2  420723123456            1327        s
6   02.05.2015  13:19:41  Volání O2  420602123456              29        s
7   02.05.2015  18:31:09  Volání O2  420774123456             416        s
14  05.05.2015  11:03:09  Volání O2  420724383578               3        s
27  12.05.2015  13:26:15  Volání O2  420606123456              87        s
37  15.05.2015  13:50:35  Volání O2  420774123456              48        s


This is the Volání T-Mobile group
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
19  08.05.2015  13:55:44  Volání T-Mobile  420737123456              10   
33  14.05.2015  12:13:54  Volání T-Mobile  420605065560             113   
34  14.05.2015  13:59:30  Volání T-Mobile  420605123456              41   

   Jednotka  
19        s  
33        s  
34        s  


This is the Volání Vodafone group
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
3   01.05.2015  19:19:56  Volání Vodafone  420777123456              94   
8   02.05.2015  19:06:37  Volání Vodafone  420721123456              62   
21  09.05.2015  11:07:41  Volání Vodafone  420777123456             333   
28  12.05.2015  13:30:47  Volání Vodafone  420737050550              43   
31  13.05.2015  17:39:42  Volání Vodafone  420777123456             278   

   Jednotka  
3         s  
8         s  
21        s  
28        s  
31        s  


This is the Volání pevná síť T-Mobile group
         Datum       Čas                 Typ hovoru      Kam komu  \
10  03.05.2015  09:06:14  Volání pevná síť T-Mobile  420212345678   
11  03.05.2015  10:11:30  Volání pevná síť T-Mobile  420212345678   

    Počet jednotek Jednotka  
10            1435        s  
11            1552        s  


This is the Volání pevné sítě group
         Datum       Čas         Typ hovoru      Kam komu  Počet jednotek  \
23  10.05.2015  16:15:31  Volání pevné sítě  420221123456              17   
26  12.05.2015  12:50:08  Volání pevné sítě  420605123456              63   
29  12.05.2015  15:14:15  Volání pevné sítě  420605123456             450   

   Jednotka  
23        s  
26        s  
29        s  


This is the Volání zdarma group
         Datum       Čas     Typ hovoru      Kam komu  Počet jednotek Jednotka
16  06.05.2015  11:04:14  Volání zdarma  420800123456             498        s


In [42]:
"""Na prikladu nize jsme si sdruzili data podle Typu hovoru a nakonec si vypsali
prumerny pocet jednotek. Mean se zde priradil automaticky, protoze se jedna
o jediny sloupec co obsahuje ciselne hodnoty"""


phone.groupby(['Typ hovoru']).mean()
Out[42]:
Počet jednotek
Typ hovoru
Mobilní internet 363374.117647
SMS T-Mobile 1.000000
SMS ostatní sítě 1.000000
Volání O2 318.333333
Volání T-Mobile 54.666667
Volání Vodafone 162.000000
Volání pevná síť T-Mobile 1493.500000
Volání pevné sítě 176.666667
Volání zdarma 498.000000
In [43]:
# Do groupby priradte pole a vypiste pocet jednotek kazdeho typu hovoru pro kazdy den z nasi faktury
# Hint: groupby ma jako parametr pole o dvou prvcich, budeme potrebovat agregacni funkci sum()
phone.groupby(['Datum', 'Typ hovoru']).sum()
Out[43]:
Počet jednotek
Datum Typ hovoru
01.05.2015 Mobilní internet 7233
SMS ostatní sítě 2
Volání O2 1327
Volání Vodafone 94
02.05.2015 Mobilní internet 78554
Volání O2 445
Volání Vodafone 62
03.05.2015 Mobilní internet 263835
Volání pevná síť T-Mobile 2987
04.05.2015 Mobilní internet 98254
05.05.2015 Mobilní internet 134114
Volání O2 3
06.05.2015 Mobilní internet 82599
Volání zdarma 498
07.05.2015 Mobilní internet 2212521
08.05.2015 Mobilní internet 110709
Volání T-Mobile 10
09.05.2015 Mobilní internet 103662
Volání Vodafone 333
10.05.2015 Mobilní internet 1090003
Volání pevné sítě 17
11.05.2015 Mobilní internet 358769
12.05.2015 Mobilní internet 89394
Volání O2 87
Volání Vodafone 43
Volání pevné sítě 513
13.05.2015 Mobilní internet 348448
Volání Vodafone 278
14.05.2015 Mobilní internet 138930
SMS T-Mobile 1
Volání T-Mobile 154
15.05.2015 Mobilní internet 874206
SMS ostatní sítě 4
Volání O2 48
16.05.2015 Mobilní internet 115198
17.05.2015 Mobilní internet 70931
In [44]:
"""
Data muzeme sdruzovat i podle vice kriterii, zde vidime vypis sdruzeny dle typu hovoru a v urcity den
"""

my_stats = phone.groupby(['Typ hovoru', 'Datum'])[['Počet jednotek','Jednotka']]

for (k1, k2), group in my_stats:
    print("K1 = {} , K2={}".format(k1, k2))
    print(group)
    print("\n")
    
K1 = Mobilní internet , K2=01.05.2015
        Datum       Čas        Typ hovoru              Kam komu  \
0  01.05.2015  00:08:44  Mobilní internet  internet.t-mobile.cz   

   Počet jednotek Jednotka  
0            7233       kB  


K1 = Mobilní internet , K2=02.05.2015
        Datum       Čas        Typ hovoru              Kam komu  \
5  02.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

   Počet jednotek Jednotka  
5           78554       kB  


K1 = Mobilní internet , K2=03.05.2015
        Datum       Čas        Typ hovoru              Kam komu  \
9  03.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

   Počet jednotek Jednotka  
9          263835       kB  


K1 = Mobilní internet , K2=04.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
12  04.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
12           98254       kB  


K1 = Mobilní internet , K2=05.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
13  05.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
13          134114       kB  


K1 = Mobilní internet , K2=06.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
15  06.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
15           82599       kB  


K1 = Mobilní internet , K2=07.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
17  07.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
17         2212521       kB  


K1 = Mobilní internet , K2=08.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
18  08.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
18          110709       kB  


K1 = Mobilní internet , K2=09.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
20  09.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
20          103662       kB  


K1 = Mobilní internet , K2=10.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
22  10.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
22         1090003       kB  


K1 = Mobilní internet , K2=11.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
24  11.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
24          358769       kB  


K1 = Mobilní internet , K2=12.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
25  12.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
25           89394       kB  


K1 = Mobilní internet , K2=13.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
30  13.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
30          348448       kB  


K1 = Mobilní internet , K2=14.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
32  14.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
32          138930       kB  


K1 = Mobilní internet , K2=15.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
36  15.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
36          874206       kB  


K1 = Mobilní internet , K2=16.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
42  16.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
42          115198       kB  


K1 = Mobilní internet , K2=17.05.2015
         Datum       Čas        Typ hovoru              Kam komu  \
43  17.05.2015  00:00:00  Mobilní internet  internet.t-mobile.cz   

    Počet jednotek Jednotka  
43           70931       kB  


K1 = SMS T-Mobile , K2=14.05.2015
         Datum       Čas    Typ hovoru   Kam komu  Počet jednotek Jednotka
35  14.05.2015  14:11:21  SMS T-Mobile  736123456               1       ks


K1 = SMS ostatní sítě , K2=01.05.2015
        Datum       Čas        Typ hovoru      Kam komu  Počet jednotek  \
1  01.05.2015  16:11:11  SMS ostatní sítě     212345678               1   
2  01.05.2015  19:16:37  SMS ostatní sítě  420777123456               1   

  Jednotka  
1       ks  
2       ks  


K1 = SMS ostatní sítě , K2=15.05.2015
         Datum       Čas        Typ hovoru      Kam komu  Počet jednotek  \
38  15.05.2015  16:51:28  SMS ostatní sítě  420606123456               1   
39  15.05.2015  16:51:29  SMS ostatní sítě  420606123456               1   
40  15.05.2015  17:29:11  SMS ostatní sítě  420606123456               1   
41  15.05.2015  17:29:11  SMS ostatní sítě  420606123456               1   

   Jednotka  
38       ks  
39       ks  
40       ks  
41       ks  


K1 = Volání O2 , K2=01.05.2015
        Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
4  01.05.2015  19:24:17  Volání O2  420723123456            1327        s


K1 = Volání O2 , K2=02.05.2015
        Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
6  02.05.2015  13:19:41  Volání O2  420602123456              29        s
7  02.05.2015  18:31:09  Volání O2  420774123456             416        s


K1 = Volání O2 , K2=05.05.2015
         Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
14  05.05.2015  11:03:09  Volání O2  420724383578               3        s


K1 = Volání O2 , K2=12.05.2015
         Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
27  12.05.2015  13:26:15  Volání O2  420606123456              87        s


K1 = Volání O2 , K2=15.05.2015
         Datum       Čas Typ hovoru      Kam komu  Počet jednotek Jednotka
37  15.05.2015  13:50:35  Volání O2  420774123456              48        s


K1 = Volání T-Mobile , K2=08.05.2015
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
19  08.05.2015  13:55:44  Volání T-Mobile  420737123456              10   

   Jednotka  
19        s  


K1 = Volání T-Mobile , K2=14.05.2015
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
33  14.05.2015  12:13:54  Volání T-Mobile  420605065560             113   
34  14.05.2015  13:59:30  Volání T-Mobile  420605123456              41   

   Jednotka  
33        s  
34        s  


K1 = Volání Vodafone , K2=01.05.2015
        Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
3  01.05.2015  19:19:56  Volání Vodafone  420777123456              94   

  Jednotka  
3        s  


K1 = Volání Vodafone , K2=02.05.2015
        Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
8  02.05.2015  19:06:37  Volání Vodafone  420721123456              62   

  Jednotka  
8        s  


K1 = Volání Vodafone , K2=09.05.2015
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
21  09.05.2015  11:07:41  Volání Vodafone  420777123456             333   

   Jednotka  
21        s  


K1 = Volání Vodafone , K2=12.05.2015
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
28  12.05.2015  13:30:47  Volání Vodafone  420737050550              43   

   Jednotka  
28        s  


K1 = Volání Vodafone , K2=13.05.2015
         Datum       Čas       Typ hovoru      Kam komu  Počet jednotek  \
31  13.05.2015  17:39:42  Volání Vodafone  420777123456             278   

   Jednotka  
31        s  


K1 = Volání pevná síť T-Mobile , K2=03.05.2015
         Datum       Čas                 Typ hovoru      Kam komu  \
10  03.05.2015  09:06:14  Volání pevná síť T-Mobile  420212345678   
11  03.05.2015  10:11:30  Volání pevná síť T-Mobile  420212345678   

    Počet jednotek Jednotka  
10            1435        s  
11            1552        s  


K1 = Volání pevné sítě , K2=10.05.2015
         Datum       Čas         Typ hovoru      Kam komu  Počet jednotek  \
23  10.05.2015  16:15:31  Volání pevné sítě  420221123456              17   

   Jednotka  
23        s  


K1 = Volání pevné sítě , K2=12.05.2015
         Datum       Čas         Typ hovoru      Kam komu  Počet jednotek  \
26  12.05.2015  12:50:08  Volání pevné sítě  420605123456              63   
29  12.05.2015  15:14:15  Volání pevné sítě  420605123456             450   

   Jednotka  
26        s  
29        s  


K1 = Volání zdarma , K2=06.05.2015
         Datum       Čas     Typ hovoru      Kam komu  Počet jednotek Jednotka
16  06.05.2015  11:04:14  Volání zdarma  420800123456             498        s


In [45]:
# zkuste zobrazit statistickou analyzu dat z naseho dataFrame df_wine a vysledky sdruzte dle kvality
df_wine.groupby('quality').describe()
Out[45]:
alcohol chlorides citric acid density fixed acidity free sulfur dioxide pH residual sugar sulphates total sulfur dioxide volatile acidity
quality
3 count 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000 10.000000
mean 9.955000 0.122500 0.171000 0.997464 8.360000 11.000000 3.398000 2.635000 0.570000 24.900000 0.884500
std 0.818009 0.066241 0.250664 0.002002 1.770875 9.763879 0.144052 1.401596 0.122020 16.828877 0.331256
min 8.400000 0.061000 0.000000 0.994710 6.700000 3.000000 3.160000 1.200000 0.400000 9.000000 0.440000
25% 9.725000 0.079000 0.005000 0.996150 7.150000 5.000000 3.312500 1.875000 0.512500 12.500000 0.647500
50% 9.925000 0.090500 0.035000 0.997565 7.500000 6.000000 3.390000 2.100000 0.545000 15.000000 0.845000
75% 10.575000 0.143000 0.327500 0.998770 9.875000 14.500000 3.495000 3.100000 0.615000 42.500000 1.010000
max 11.000000 0.267000 0.660000 1.000800 11.600000 34.000000 3.630000 5.700000 0.860000 49.000000 1.580000
4 count 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000 53.000000
mean 10.265094 0.090679 0.174151 0.996542 7.779245 12.264151 3.381509 2.694340 0.596415 36.245283 0.693962
std 0.934776 0.076192 0.201030 0.001575 1.626624 9.025926 0.181441 1.789436 0.239391 27.583374 0.220110
min 9.000000 0.045000 0.000000 0.993400 4.600000 3.000000 2.740000 1.300000 0.330000 7.000000 0.230000
25% 9.600000 0.067000 0.030000 0.995650 6.800000 6.000000 3.300000 1.900000 0.490000 14.000000 0.530000
50% 10.000000 0.080000 0.090000 0.996500 7.500000 11.000000 3.370000 2.100000 0.560000 26.000000 0.670000
75% 11.000000 0.089000 0.270000 0.997450 8.400000 15.000000 3.500000 2.800000 0.600000 49.000000 0.870000
max 13.100000 0.610000 1.000000 1.001000 12.500000 41.000000 3.900000 12.900000 2.000000 119.000000 1.130000
5 count 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000 681.000000
mean 9.899706 0.092736 0.243686 0.997104 8.167254 16.983847 3.304949 2.528855 0.620969 56.513950 0.577041
std 0.736521 0.053707 0.180003 0.001589 1.563988 10.955446 0.150618 1.359753 0.171062 36.993116 0.164801
min 8.500000 0.039000 0.000000 0.992560 5.000000 3.000000 2.880000 1.200000 0.370000 6.000000 0.180000
25% 9.400000 0.074000 0.090000 0.996200 7.100000 9.000000 3.200000 1.900000 0.530000 26.000000 0.460000
50% 9.700000 0.081000 0.230000 0.997000 7.800000 15.000000 3.300000 2.200000 0.580000 47.000000 0.580000
75% 10.200000 0.094000 0.360000 0.997900 8.900000 23.000000 3.400000 2.600000 0.660000 84.000000 0.670000
max 14.900000 0.611000 0.790000 1.003150 15.900000 68.000000 3.740000 15.500000 1.980000 155.000000 1.330000
6 count 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000 638.000000
mean 10.629519 0.084956 0.273824 0.996615 8.347179 15.711599 3.318072 2.477194 0.675329 40.869906 0.497484
std 1.049639 0.039563 0.195108 0.002000 1.797849 9.940911 0.153995 1.441576 0.158650 25.038250 0.160962
min 8.400000 0.034000 0.000000 0.990070 4.700000 1.000000 2.860000 0.900000 0.400000 6.000000 0.160000
25% 9.800000 0.068250 0.090000 0.995402 7.000000 8.000000 3.220000 1.900000 0.580000 23.000000 0.380000
50% 10.500000 0.078000 0.260000 0.996560 7.900000 14.000000 3.320000 2.200000 0.640000 35.000000 0.490000
75% 11.300000 0.088000 0.430000 0.997893 9.400000 21.000000 3.410000 2.500000 0.750000 54.000000 0.600000
max 14.000000 0.415000 0.780000 1.003690 14.300000 72.000000 4.010000 15.400000 1.950000 165.000000 1.040000
7 count 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000 199.000000
mean 11.465913 0.076588 0.375176 0.996104 8.872362 14.045226 3.290754 2.720603 0.741256 35.020101 0.403920
std 0.961933 0.029456 0.194432 0.002176 1.992483 10.175255 0.150101 1.371509 0.135639 33.191206 0.145224
min 9.200000 0.012000 0.000000 0.990640 4.900000 3.000000 2.920000 1.200000 0.390000 7.000000 0.120000
25% 10.800000 0.062000 0.305000 0.994765 7.400000 6.000000 3.200000 2.000000 0.650000 17.500000 0.300000
50% 11.500000 0.073000 0.400000 0.995770 8.800000 11.000000 3.280000 2.300000 0.740000 27.000000 0.370000
75% 12.100000 0.087000 0.490000 0.997360 10.100000 18.000000 3.380000 2.750000 0.830000 43.000000 0.485000
max 14.000000 0.358000 0.760000 1.003200 15.600000 54.000000 3.780000 8.900000 1.360000 289.000000 0.915000
8 count 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000 18.000000
mean 12.094444 0.068444 0.391111 0.995212 8.566667 13.277778 3.267222 2.577778 0.767778 33.444444 0.423333
std 1.224011 0.011678 0.199526 0.002378 2.119656 11.155613 0.200640 1.295038 0.115379 25.433240 0.144914
min 9.800000 0.044000 0.030000 0.990800 5.000000 3.000000 2.880000 1.400000 0.630000 12.000000 0.260000
25% 11.325000 0.062000 0.302500 0.994175 7.250000 6.000000 3.162500 1.800000 0.690000 16.000000 0.335000
50% 12.150000 0.070500 0.420000 0.994940 8.250000 7.500000 3.230000 2.100000 0.740000 21.500000 0.370000
75% 12.875000 0.075500 0.530000 0.997200 10.225000 16.500000 3.350000 2.600000 0.820000 43.000000 0.472500
max 14.000000 0.086000 0.720000 0.998800 12.600000 42.000000 3.720000 6.400000 1.100000 88.000000 0.850000