Rozdział 2.1

import pandas as pd

auta = pd.read_table("http://www.biecek.pl/R/auta.csv",sep=";",header=0)
print(auta.head())
##      Marka Model     Cena  KM  Pojemnosc  Przebieg   Paliwo  Produkcja
## 0  Peugeot   206   8799.0  60       1100   85000.0  benzyna       2003
## 1  Peugeot   206  15500.0  60       1124  114000.0  benzyna       2005
## 2  Peugeot   206  11900.0  90       1997  215000.0   diesel       2003
## 3  Peugeot   206  10999.0  70       1868  165000.0   diesel       2003
## 4  Peugeot   206  11900.0  70       1398  146000.0   diesel       2005

Rozdział 2.2.1

from scipy import *

print(array([2, 3, 5, 7, 11, 13, 17]))
## [ 2  3  5  7 11 13 17]
from scipy import *

print(arange(-3, 3+1, 1))
## [-3 -2 -1  0  1  2  3]
from scipy import *

print(arange(0, 100+1, 11))
## [ 0 11 22 33 44 55 66 77 88 99]
import datetime

sol = [ datetime.date(2017, i + 1, 1).strftime('%B') for i in range(12) ]
print(sol)
## ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
import string

LETTERS = list(string.ascii_uppercase)
print(LETTERS)
## ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']

Rozdział 2.2.1.1*

import string

LETTERS = list(string.ascii_uppercase)
print(LETTERS[5-1:10])
## ['E', 'F', 'G', 'H', 'I', 'J']
import string

LETTERS = list(string.ascii_uppercase)
sol = [ LETTERS[i] for i in [0,1,8,9,10,11,12,13]]
print(sol)
## ['A', 'B', 'I', 'J', 'K', 'L', 'M', 'N']
import string

LETTERS = list(string.ascii_uppercase)
print(LETTERS[0:len(LETTERS):2])
## ['A', 'C', 'E', 'G', 'I', 'K', 'M', 'O', 'Q', 'S', 'U', 'W', 'Y']
import datetime

sol = [ datetime.date(2017, i + 1, 1).strftime('%B') for i in range(12) ]
del sol[4:9]
print(sol)
## ['January', 'February', 'March', 'April', 'October', 'November', 'December']
from scipy import *

wartosc = array([(1, 'pion'), (3, 'skoczek'),(3, 'goniec'),(5, 'wieza'),(9, 'hetman'),(float('inf'), 'krol')])

print(wartosc[::-1],'\n')

print(wartosc[2])
## [['inf' 'krol']
##  ['9' 'hetman']
##  ['5' 'wieza']
##  ['3' 'goniec']
##  ['3' 'skoczek']
##  ['1' 'pion']] 
## 
## ['3' 'goniec']

Rozdział 2.2.2

import warnings
warnings.filterwarnings("ignore")

import pandas.rpy.common as com
koty_ptaki = com.load_data('koty_ptaki', package='Przewodnik')
print(koty_ptaki.head())
##    gatunek   waga  dlugosc  predkosc  habitat  zywotnosc druzyna
## 1   Tygrys  300.0      2.5        60     Azja         25     Kot
## 2      Lew  200.0      2.0        80   Afryka         29     Kot
## 3   Jaguar  100.0      1.7        90  Ameryka         15     Kot
## 4     Puma   80.0      1.7        70  Ameryka         13     Kot
## 5  Leopard   70.0      1.4        85     Azja         21     Kot

Rozdział 2.2.2.1

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import pandas.rpy.common as com

koty_ptaki = com.load_data('koty_ptaki', package='Przewodnik')

print(koty_ptaki.ix[[1,3,5]].head(),'\n')

print(koty_ptaki.ix[[1,3,5],[1,2,3,4]],'\n')

print(koty_ptaki.loc[koty_ptaki["predkosc"] > 100, ["gatunek","predkosc","dlugosc"]])
##    gatunek   waga  dlugosc  predkosc  habitat  zywotnosc druzyna
## 1   Tygrys  300.0      2.5        60     Azja         25     Kot
## 3   Jaguar  100.0      1.7        90  Ameryka         15     Kot
## 5  Leopard   70.0      1.4        85     Azja         21     Kot 
## 
##     waga  dlugosc  predkosc  habitat
## 1  300.0      2.5        60     Azja
## 3  100.0      1.7        90  Ameryka
## 5   70.0      1.4        85     Azja 
## 
##            gatunek  predkosc  dlugosc
## 6           Gepard       115      1.4
## 8           Jerzyk       170      0.2
## 10   Orzel przedni       160      0.9
## 11  Sokol wedrowny       110      0.5
## 13        Albatros       120      0.8
import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import pandas.rpy.common as com

koty_ptaki = com.load_data('koty_ptaki', package='Przewodnik')
print(koty_ptaki["predkosc"],'\n')

koty_ptaki['predkosc_mile'] = koty_ptaki["predkosc"] * 1.6
print(koty_ptaki.head(2))
## 1      60
## 2      80
## 3      90
## 4      70
## 5      85
## 6     115
## 7      65
## 8     170
## 9      70
## 10    160
## 11    110
## 12    100
## 13    120
## Name: predkosc, dtype: int32 
## 
##   gatunek   waga  dlugosc  predkosc habitat  zywotnosc druzyna  predkosc_mile
## 1  Tygrys  300.0      2.5        60    Azja         25     Kot           96.0
## 2     Lew  200.0      2.0        80  Afryka         29     Kot          128.0

Rozdział 2.2.3

import string

LETTERS = list(string.ascii_uppercase)
trojka = {'liczby':[1,2,3,4,5],'litery':LETTERS,'logika':[True,True,True,False]}
print(trojka,'\n')

print(trojka['logika'])
## {'liczby': [1, 2, 3, 4, 5], 'logika': [True, True, True, False], 'litery': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']} 
## 
## [True, True, True, False]

Rozdział 2.3

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc.head(4))
##    wiek wyksztalcenie st.cywilny       plec              praca  \
## 1    70      zawodowe  w zwiazku  mezczyzna  uczen lub pracuje   
## 2    66      zawodowe  w zwiazku    kobieta  uczen lub pracuje   
## 3    71      zawodowe    singiel    kobieta  uczen lub pracuje   
## 4    57       srednie  w zwiazku  mezczyzna  uczen lub pracuje   
## 
##    cisnienie.skurczowe  cisnienie.rozkurczowe  
## 1                  143                     83  
## 2                  123                     80  
## 3                  167                     80  
## 4                  150                     87

Rozdział 2.3.1

import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc['wiek'].min(),daneSoc['wiek'].max())
## 22 75
import warnings
warnings.filterwarnings("ignore")

from scipy import stats
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(stats.trim_mean(daneSoc['wiek'], 0.2))
## 42.5806451613
import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc['wiek'].median())
## 45.0
import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc['wiek'].describe())
## count    204.000000
## mean      43.161765
## std       13.847100
## min       22.000000
## 25%       30.000000
## 50%       45.000000
## 75%       53.000000
## max       75.000000
## Name: wiek, dtype: float64
import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(std(daneSoc['wiek'], ddof=1))
## 13.8470999195
import warnings
warnings.filterwarnings("ignore")

from scipy import stats
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(stats.kurtosis(daneSoc['wiek']))
## -0.935658875845816
import warnings
warnings.filterwarnings("ignore")

from scipy import stats
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(stats.skew(daneSoc['wiek']))
## 0.23487589610214818
import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(percentile(daneSoc['wiek'],[10,25,50,75,90]))
## [ 26.   30.   45.   53.   62.4]
import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc.iloc[:,[0,5,6]].apply(lambda x: (x-mean(x))/std(x,ddof=1)).cov())
##                            wiek  cisnienie.skurczowe  cisnienie.rozkurczowe
## wiek                   1.000000            -0.027652              -0.083137
## cisnienie.skurczowe   -0.027652             1.000000               0.678527
## cisnienie.rozkurczowe -0.083137             0.678527               1.000000

Rozdział 2.3.2

import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc['wyksztalcenie'].value_counts())
## podstawowe    93
## srednie       55
## wyzsze        34
## zawodowe      22
## Name: wyksztalcenie, dtype: int64
import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(pd.crosstab(daneSoc['wyksztalcenie'],daneSoc['praca']))
## praca          nie pracuje  uczen lub pracuje
## wyksztalcenie                                
## podstawowe              22                 71
## srednie                 16                 39
## wyzsze                   6                 28
## zawodowe                 8                 14
import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import pandas.rpy.common as com

daneSoc = com.load_data('daneSoc', package='Przewodnik')
print(daneSoc.iloc[:,[0,1,2,3]].describe(include='all'))
##               wiek wyksztalcenie st.cywilny       plec
## count   204.000000           204        204        204
## unique         NaN             4          2          2
## top            NaN    podstawowe    singiel  mezczyzna
## freq           NaN            93        120        149
## mean     43.161765           NaN        NaN        NaN
## std      13.847100           NaN        NaN        NaN
## min      22.000000           NaN        NaN        NaN
## 25%      30.000000           NaN        NaN        NaN
## 50%      45.000000           NaN        NaN        NaN
## 75%      53.000000           NaN        NaN        NaN
## max      75.000000           NaN        NaN        NaN

Rozdział 2.4.1

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
sns.countplot(y="wyksztalcenie",color='C0', data=daneSoc,ax=ax1,order=daneSoc.wyksztalcenie.value_counts().iloc[:4].index)
sns.countplot(x="wyksztalcenie", hue="plec", data=daneSoc,ax=ax2,order=daneSoc.wyksztalcenie.value_counts().iloc[:4].index)
fig.tight_layout()
fig.savefig('rys_2.1.png')

Rozdział 2.4.2

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
ax1.hist(daneSoc['wiek'],alpha=0.5)
ax1.set_xlabel('Wiek')
ax1.set_ylabel('Liczba')
ax2.hist(daneSoc['wiek'],alpha=0.5,normed=1)
ax2.set_xlabel('Wiek')
ax2.set_ylabel('Częstość')
fig.tight_layout()
fig.savefig('rys_2.2.png')

Rozdział 2.4.3

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
daneUn = daneSoc[['cisnienie.skurczowe','cisnienie.rozkurczowe']].unstack().reset_index()
daneUn.columns = ['grupa', 'level','cisnienie']
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
sns.boxplot(x="cisnienie", y="grupa", color="C0",data=daneUn, sym='k.',flierprops=dict(marker='.', markersize=10),ax=ax1)
sns.boxplot(x="wyksztalcenie", y="wiek", color="C0",data=daneSoc,ax=ax2)
fig.tight_layout()
fig.savefig('rys_2.3.png')

Rozdział 2.4.4

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.distributions.empirical_distribution import *

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
sns.kdeplot(daneSoc['wiek'], shade=False, ax= ax1)
ax1.set_title('Rozkład wieku')
ax1.set_xlabel('bw = "scott"')
ax1.set_ylabel('Density')
sns.kdeplot(daneSoc['wiek'], shade=True, bw= 1.5, ax= ax2)
ax2.set_title('Rozkład wieku')
ax2.set_xlabel('bw = 1.5')
ax2.set_ylabel('Density')
fig.tight_layout()
fig.savefig('rys_2.4.png')

import warnings
warnings.filterwarnings("ignore")

from scipy import *
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.distributions.empirical_distribution import *

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
X = daneSoc['wiek']
Y = ECDF(X)(X)
Xm = daneSoc[(daneSoc.plec == 'mezczyzna')]['wiek']
Ym = ECDF(Xm)(Xm)
Xk = daneSoc[(daneSoc.plec == 'kobieta')]['wiek']
Yk = ECDF(Xk)(Xk)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
ax1.step(ECDF(daneSoc['wiek']).x, ECDF(daneSoc['wiek']).y,color='C0')
ax1.plot(X,Y,'.',color='C0')
ax1.set_title('Dystrybuanta wieku')
ax2.step(ECDF(Xm).x, ECDF(Xm).y,color='C1')
ax2.plot(Xm,Ym,'.',color='C1')
ax2.step(ECDF(Xk).x, ECDF(Xk).y,color='C2')
ax2.plot(Xk,Yk,'.',color='C2')
ax2.set_title('Wiek / plec')
fig.tight_layout()
fig.savefig('rys_2.5.png')

Rozdział 2.4.5*

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
sns.regplot(x="cisnienie.skurczowe", y="cisnienie.rozkurczowe", data=daneSoc, ax= ax1)
sns.regplot(x="cisnienie.skurczowe", y="cisnienie.rozkurczowe",marker="^", data=daneSoc[(daneSoc.plec == 'mezczyzna')], label='mezczyzna', ax= ax2)
sns.regplot(x="cisnienie.skurczowe", y="cisnienie.rozkurczowe", data=daneSoc[(daneSoc.plec == 'kobieta')], label='kobieta', ax= ax2)
legend = ax2.legend(frameon = True, ncol=2)
frame = legend.get_frame()
frame.set_color('white')
fig.tight_layout()
fig.savefig('rys_2.6.png')

Rozdział 2.4.6

import warnings
warnings.filterwarnings("ignore")

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.graphics.mosaicplot import mosaic

daneSoc = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/daneSoc.csv",header=0)
fig = plt.figure(figsize=(14,6))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
mosaic(daneSoc, ['wyksztalcenie'], ax= ax1)
mosaic(daneSoc, ['wyksztalcenie', 'praca'], ax= ax2,)
fig.tight_layout()
fig.savefig('rys_2.7.png')

Rozdział 2.5.1

from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
tylkoCorsa = auta >> sift(X.Model=="Corsa") >> head()
print(tylkoCorsa)
##      Marka  Model     Cena   KM  Pojemnosc  Przebieg   Paliwo  Produkcja
## 1000  Opel  Corsa  13450.0   70       1248  190000.0   diesel       2004
## 1001  Opel  Corsa  25990.0   75       1300   84000.0   diesel       2008
## 1002  Opel  Corsa  17990.0   80       1229   48606.0  benzyna       2007
## 1003  Opel  Corsa  23999.0   60        998   63000.0  benzyna       2009
## 1004  Opel  Corsa  16500.0  101       1700  118000.0   diesel       2006
from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
tylkoCorsa = auta >> sift((X.Model=="Corsa") & (X.Produkcja==2010) & (X.Paliwo == "diesel"))
print(tylkoCorsa)
##      Marka  Model        Cena  KM  Pojemnosc  Przebieg  Paliwo  Produkcja
## 1035  Opel  Corsa  49050.0000  75       1300     100.0  diesel       2010
## 1060  Opel  Corsa  47202.3416  76       1300   53000.0  diesel       2010
## 1109  Opel  Corsa  37900.0000  95       1248    8300.0  diesel       2010
## 1144  Opel  Corsa  12200.0000  75       1248   11378.0  diesel       2010
## 1158  Opel  Corsa  34900.0000  95       1300   24000.0  diesel       2010
## 1178  Opel  Corsa  37900.0000  75       1248   18500.0  diesel       2010

Rozdział 2.5.2

from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
trzyKolumny = select(auta, X.Marka, X.Model, X.Cena)
print(trzyKolumny.head())
##      Marka Model     Cena
## 0  Peugeot   206   8799.0
## 1  Peugeot   206  15500.0
## 2  Peugeot   206  11900.0
## 3  Peugeot   206  10999.0
## 4  Peugeot   206  11900.0
import pandas as pd

auta = pd.read_csv("/home/krz/Pulpit/Przewodnik_R2/auta.csv",header=0)
u = [auta.columns.values[i].startswith('M') for i in range(auta.shape[1])]
nam = auta.columns.values
kol = nam[u]
print(auta[kol].head())
##      Marka Model
## 0  Peugeot   206
## 1  Peugeot   206
## 2  Peugeot   206
## 3  Peugeot   206
## 4  Peugeot   206

Rozdział 2.5.3

from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
autaZWiekiem = auta >> mutate(Wiek = 2013 - X.Produkcja)
autaZWiekiem = autaZWiekiem >> mutate(PrzebiegNaRok = X.Przebieg/X.Wiek)
print(select(autaZWiekiem, X.Marka,X.Model,X.Cena,X.Paliwo,X.Wiek,X.PrzebiegNaRok).head())
##      Marka Model     Cena   Paliwo  Wiek  PrzebiegNaRok
## 0  Peugeot   206   8799.0  benzyna    10         8500.0
## 1  Peugeot   206  15500.0  benzyna     8        14250.0
## 2  Peugeot   206  11900.0   diesel    10        21500.0
## 3  Peugeot   206  10999.0   diesel    10        16500.0
## 4  Peugeot   206  11900.0   diesel     8        18250.0

Rozdział 2.4.5

from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
posortowaneAuta = arrange(auta, X.Model, X.Cena)
print(posortowaneAuta.head())
##        Marka Model     Cena  KM  Pojemnosc  Przebieg   Paliwo  Produkcja
## 163  Peugeot   206  6330.70  90       1997   90000.0   diesel       2004
## 23   Peugeot   206  6599.00  70       1398  277000.0   diesel       2004
## 55   Peugeot   206  6900.00  90       1997  132000.0   diesel       2004
## 193  Peugeot   206  7900.00  88       1360  114000.0  benzyna       2004
## 135  Peugeot   206  8469.45  60       1124   77800.0  benzyna       2005
from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
posortowaneAuta = arrange(auta, X.Model, -X.Cena)
print(posortowaneAuta.head())
##        Marka Model      Cena   KM  Pojemnosc  Przebieg   Paliwo  Produkcja
## 16   Peugeot   206  36115.00   60       1100     100.0  benzyna       2010
## 60   Peugeot   206  33600.00   65       1100     380.0  benzyna       2011
## 88   Peugeot   206  26990.00   75       1400   14000.0  benzyna       2009
## 189  Peugeot   206  26000.00   70       1398   56000.0   diesel       2007
## 72   Peugeot   206  24723.95  102       1360   90000.0  benzyna       2005

Rozdział 2.5.5

from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
tylkoKia = sift(auta, X.Marka=="Kia")
posortowane = arrange(tylkoKia, X.Cena)
czteryKolumny = select(posortowane, X.Model,X.Cena,X.Przebieg,X.Produkcja)
print(czteryKolumny.head())
##      Model     Cena  Przebieg  Produkcja
## 905  Cee'd   1026.6   28000.0       2008
## 957  Cee'd  13900.0  129000.0       2009
## 985  Cee'd  14700.0   34000.0       2009
## 936  Cee'd  14900.0  158500.0       2005
## 999  Cee'd  16900.0    9900.0       2010
from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
print(
select(
  arrange(
    sift(auta,
        X.Marka == "Kia"),
    X.Cena),
  X.Model, X.Cena, X.Przebieg, X.Produkcja).head()
)
##      Model     Cena  Przebieg  Produkcja
## 905  Cee'd   1026.6   28000.0       2008
## 957  Cee'd  13900.0  129000.0       2009
## 985  Cee'd  14700.0   34000.0       2009
## 936  Cee'd  14900.0  158500.0       2005
## 999  Cee'd  16900.0    9900.0       2010
from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
posortowane = auta >> \
                sift(X.Marka=="Kia") >> \
                arrange(X.Cena) >> \
                select(X.Model,X.Cena,X.Przebieg,X.Produkcja)
print(posortowane.head())
##      Model     Cena  Przebieg  Produkcja
## 905  Cee'd   1026.6   28000.0       2008
## 957  Cee'd  13900.0  129000.0       2009
## 985  Cee'd  14700.0   34000.0       2009
## 936  Cee'd  14900.0  158500.0       2005
## 999  Cee'd  16900.0    9900.0       2010

Rozdział 2.5.6

from dplython import *
from scipy import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
print(
auta >> \
 summarize(sredniaCena = mean(X.Cena), \
          medianaPrzebiegu = X.Przebieg.median(), \
          sredniWiek = (2013 - X.Produkcja).mean(), \
          liczba = X.Cena.count())
)
##    liczba  medianaPrzebiegu  sredniWiek   sredniaCena
## 0    2400          122000.0    6.638333  33340.382256
from dplython import *
from scipy import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
print(
auta >> \
 group_by(X.Marka) >> \
 summarize(sredniaCena = X.Cena.mean(), \
           medianaPrzebiegu = X.Przebieg.median(), \
           #sredniWiek = (2013 - X.Produkcja).mean(), \
           liczba = X.Marka.count()) >> \
 arrange(X.sredniaCena)
)
##         Marka  liczba  medianaPrzebiegu   sredniaCena
## 1        Fiat     200           75000.0  15772.328710
## 4     Peugeot     400          127750.0  17388.505657
## 3        Opel     800          120550.0  33590.744556
## 2         Kia     200           42850.0  36982.635041
## 5  Volkswagen     600          146448.0  39432.688580
## 0        Audi     200          150452.5  59891.568039
import pandas as pd
from dplython import *

auta = DplyFrame(pandas.read_csv('/home/krz/Pulpit/Przewodnik_R2/auta.csv'))
df = auta >> \
       select(X.Marka,X.Cena,X.Przebieg,X.Model) >> \
       group_by(X.Marka) >> \
       mutate(Przebieg=X.Przebieg/X.Przebieg.mean())
print(df.head(4))
##      Marka     Cena  Przebieg Model
## 0  Peugeot   8799.0  0.671202   206
## 1  Peugeot  15500.0  0.900200   206
## 2  Peugeot  11900.0  1.697745   206
## 3  Peugeot  10999.0  1.302921   206

Rozdział 2.5.7

import pandas as pd
from pandasdmx import Request

estat = Request('ESTAT')
tsdtr210 = estat.data('tsdtr210', params={'startPeriod': '1990'})
tsdtr210 = tsdtr210.write(tsdtr210.data.series)
tsdtr210 = tsdtr210.unstack()

lista = tsdtr210.index.tolist()
d = pd.DataFrame(lista)
d = d.drop(d.columns[[3]], axis=1)
d['values'] = [tsdtr210[i] for i in range(len(tsdtr210))]
d.columns.values[0] = 'unit'
d.columns.values[1] = 'vehicle'
d.columns.values[2] = 'geo'
d.columns.values[3] = 'time'
print(d.head(),'\n\n\tRozciągnij na kolumny - time:\n')

szeroka = d.pivot_table(index=['unit','vehicle','geo'], columns='time')
print(szeroka.query('geo=="PL"'),'\n\n\tRozciągnij na kolumny - geo:\n')

szeroka2 = d.pivot_table(index=['unit','vehicle','time'], columns='geo')
print(szeroka2.head())
##   unit  vehicle geo time  values
## 0   PC  BUS_TOT  AT 1990    11.0
## 1   PC  BUS_TOT  AT 1991    10.6
## 2   PC  BUS_TOT  AT 1992    10.5
## 3   PC  BUS_TOT  AT 1993    10.7
## 4   PC  BUS_TOT  AT 1994    10.6 
## 
##  Rozciągnij na kolumny - time:
## 
##                  values                                                        \
## time               1990  1991  1992  1993  1994  1995  1996  1997  1998  1999   
## unit vehicle geo                                                                
## PC   BUS_TOT PL    28.1  25.6  24.4  23.2  20.9  19.9  19.4  17.9  17.4  16.8   
##      CAR     PL    41.3  49.8  55.3  57.9  62.3  64.6  69.3  71.3  72.1  72.3   
##      TRN     PL    30.6  24.6  20.3  18.9  16.8  15.5  11.3  10.8  10.5  10.9   
## 
##                   ...                                                         \
## time              ...   2005  2006  2007  2008  2009  2010  2011  2012  2013   
## unit vehicle geo  ...                                                          
## PC   BUS_TOT PL   ...   22.4  21.8  20.8  19.9  17.9  16.8  15.7  14.8  14.1   
##      CAR     PL   ...   69.4  70.1  70.7  71.9  74.7  76.1  77.4  78.5  79.6   
##      TRN     PL   ...    8.2   8.2   8.5   8.2   7.4   7.1   6.9   6.7   6.2   
## 
##                         
## time              2014  
## unit vehicle geo        
## PC   BUS_TOT PL   14.3  
##      CAR     PL   79.9  
##      TRN     PL    5.8  
## 
## [3 rows x 25 columns] 
## 
##  Rozciągnij na kolumny - geo:
## 
##                   values                                               ...   \
## geo                   AT    BE  BG   CH  CY    CZ   DE    DK  EE    EL ...    
## unit vehicle time                                                      ...    
## PC   BUS_TOT 1990   11.0  10.6 NaN  3.7 NaN   NaN  9.1  11.3 NaN  32.4 ...    
##              1991   10.6  10.7 NaN  3.9 NaN   NaN  8.5  11.1 NaN  31.8 ...    
##              1992   10.5  10.7 NaN  4.0 NaN   NaN  8.3  11.1 NaN  32.2 ...    
##              1993   10.7  10.9 NaN  3.9 NaN  19.1  8.1  11.2 NaN  31.7 ...    
##              1994   10.6  11.8 NaN  3.9 NaN  17.0  7.3  11.3 NaN  31.1 ...    
## 
##                                                                        
## geo                NL  NO    PL    PT  RO   SE    SI    SK    TR   UK  
## unit vehicle time                                                      
## PC   BUS_TOT 1990 NaN NaN  28.1   NaN NaN  9.5  30.6   NaN  67.4  7.0  
##              1991 NaN NaN  25.6   NaN NaN  9.5  29.3   NaN  67.4  6.8  
##              1992 NaN NaN  24.4  22.7 NaN  9.4  23.0   NaN  67.2  6.7  
##              1993 NaN NaN  23.2  19.3 NaN  9.3  21.1  41.4  64.0  6.6  
##              1994 NaN NaN  20.9  17.9 NaN  9.3  20.4  39.8  60.3  6.6  
## 
## [5 rows x 35 columns]
import pandas as pd

szeroka = pd.read_csv("szeroka.csv")
tidy = pd.melt(szeroka, id_vars = ['vehicle','geo'], var_name=['rok'],
value_name='wartosc')
print(tidy.tail())
##      vehicle   geo   rok wartosc
## 2725     TRN    MK  2014     0.9
## 2726     TRN  EU27  2014     7.6
## 2727     TRN  EU28  2014     7.6
## 2728     TRN    LT  2014       1
## 2729     TRN    NL  2014     9.7

Rozdział 2.5.8

import pandas as pd
from pandasdmx import Request

estat = Request('ESTAT')
tsdtr210 = estat.data('tsdtr210', params={'startPeriod': '1990'})
tsdtr210 = tsdtr210.write(tsdtr210.data.series)
tsdtr210 = tsdtr210.unstack()

lista = tsdtr210.index.tolist()
d = pd.DataFrame(lista)
d = d.drop(d.columns[[3]], axis=1)
d['values'] = [tsdtr210[i] for i in range(len(tsdtr210))]
d.columns.values[0] = 'unit'
d.columns.values[1] = 'vehicle'
d.columns.values[2] = 'geo'
d.columns.values[3] = 'time'
d['time'] = d['time'].astype(str)
d['geo_time'] = d['geo'] + ':' + d['time']
d = d.drop(['time','geo'], axis=1)
print(d.head())
##   unit  vehicle  values geo_time
## 0   PC  BUS_TOT    11.0  AT:1990
## 1   PC  BUS_TOT    10.6  AT:1991
## 2   PC  BUS_TOT    10.5  AT:1992
## 3   PC  BUS_TOT    10.7  AT:1993
## 4   PC  BUS_TOT    10.6  AT:1994
import pandas as pd

df = pd.DataFrame()
df['daty'] = ["2004-01-01","2012-04-15","2006-10-29","2010-03-03"]
df['id'] = [1,2,3,4]
df = df.join(df['daty'].str.split('-', 2, expand=True).\
     rename(columns={0:'rok', 1:'miesiac', 2:'dzien'}))
print(df.head())
##          daty  id   rok miesiac dzien
## 0  2004-01-01   1  2004      01    01
## 1  2012-04-15   2  2012      04    15
## 2  2006-10-29   3  2006      10    29
## 3  2010-03-03   4  2010      03    03

Rozdział 2.6.2

import pandas as pd

koty_ptaki = pd.read_table("http://www.biecek.pl/R/koty_ptaki.csv",sep=';',decimal=',',header=0)
print(koty_ptaki.head())
##    gatunek   waga  dlugosc  predkosc  habitat  zywotnosc druzyna
## 0   Tygrys  300.0      2.5        60     Azja         25     Kot
## 1      Lew  200.0      2.0        80   Afryka         29     Kot
## 2   Jaguar  100.0      1.7        90  Ameryka         15     Kot
## 3     Puma   80.0      1.7        70  Ameryka         13     Kot
## 4  Leopard   70.0      1.4        85     Azja         21     Kot

Rozdział 2.6.4

import pandas as pd

d = '{"0":{"rok":"2010","wartosc":"15.5"}, "1":{"rok":"2011","wartosc":"10.1"}, "2":{"rok":"2012","wartosc":"12.2"}}'
print(pd.read_json(d, orient='index'))
##     rok  wartosc
## 0  2010     15.5
## 1  2011     10.1
## 2  2012     12.2
import pandas as pd

koty_ptaki = pd.read_csv('koty_ptaki.csv')
print(koty_ptaki.iloc[0:2].to_json(orient='index'))
## {"0":{"gatunek":"Tygrys","waga":300.0,"dlugosc":2.5,"predkosc":60,"habitat":"Azja","zywotnosc":25,"druzyna":"Kot"},"1":{"gatunek":"Lew","waga":200.0,"dlugosc":2.0,"predkosc":80,"habitat":"Afryka","zywotnosc":29,"druzyna":"Kot"}}

Rozdział 2.6.5

from astropy.extern.six.moves.urllib import request
from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://www.filmweb.pl/premiere"
soup = BeautifulSoup(request.urlopen(url), "lxml")
tags = soup.find_all('h3')
print('\tPierwsze %.0f tytułów:' % len(tags),'\n')
for t in tags:
    print(t.text)
##  Pierwsze 31 tytułów: 
## 
## Jackie (2016)
## McImperium (2016)
## Rings (2017)
## Boy 7 (2015)
## Fukushima, moja miłość (2016)
## Skazana (2015)
## LEGO® BATMAN: FILM (2017)
## Ciemniejsza strona Greya (2017)
## John Wick 2 (2017)
## To tylko koniec świata (2016)
## Szwedzka teoria miłości (2015)
## Cmentarz wspaniałości (2015)
## Nauczycielka (2016)
## Soy Nero  (2016)
## Moonlight (2016)
## Milczenie (2016)
## Lekarstwo na życie (2016)
## Był sobie pies (2017)
## PolandJa (2017)
## Zerwany kłos (2016)
## Ostatnie tango (2015)
## Wściekły Nick (2016)
## Alpejska przygoda (2015)
## Ukryte działania (2016)
## Pokot (2017)
## xXx: Reaktywacja (2017)
## Planetarium (2016)
## Porady na zdrady (2016)
## Praktykant (2016)
## Barbie w świecie gier (2017)
## Wielka wyprawa Molly (2016)

Rozdział 2.6.6

import pandas as pd

data = pd.read_fwf('/home/krz/Pulpit/Przewodnik_R2/daneFWF.txt',
colspecs = [(0,1),(1,3),(3,7),(7,12),(12,14)],names = ['V1','V2','V3','V4','V5'])
print(data)
##    V1  V2   V3    V4  V5
## 0   1  10  ALA  STOP  13
## 1   1  11  OLA  STOP   5

Rozdział 2.6.7

from astropy.extern.six.moves.urllib import request
import pandas as pd
from scipy import *

url = "http://biecek.pl/R/dane/GUS_LUDN.xlsx"
open('GUS_LUDN.xlsx', 'wb').write(request.urlopen(url).read())
ludnosc = pd.read_excel('GUS_LUDN.xlsx',sheetname='DATA')
ludnosc['VALUE'] = ludnosc['VALUE'].apply(pd.to_numeric, args=('coerce',))
print(ludnosc.head())
##    TERYT_CODE TERYT_NAME    AGE    SEX  YEAR MEASURE UNIT       VALUE  \
## 0           0     POLAND  total  total  1995       person  38609399.0   
## 1           0     POLAND  total  total  1996       person  38639341.0   
## 2           0     POLAND  total  total  1997       person  38659979.0   
## 3           0     POLAND  total  total  1998       person  38666983.0   
## 4           0     POLAND  total  total  1999       person  38263303.0   
## 
##   ATTRIBUTE  
## 0            
## 1            
## 2            
## 3            
## 4

Rozdział 2.6.8

from astropy.extern.six.moves.urllib import request
import savReaderWriter as spss
import pandas as pd

url = "http://www.biecek.pl/R/dane/daneSPSS.sav"
open('daneSPSS.sav', 'wb').write(request.urlopen(url).read())
mydata_spss = spss.SavReader('daneSPSS.sav', ioLocale='pl_PL.UTF-8',returnHeader=True)
raw_data_list = list(mydata_spss)
dane = pd.DataFrame(raw_data_list)
data = dane.rename(columns=dane.loc[0]).iloc[1:]
print(data)
##    b'wiek' b'waga' b'diagnoza'    b'urodzony'
## 1       18      62   b'zdrowy'  b'1989-10-07'
## 2       19      66   b'zdrowy'  b'1988-01-01'
## 3       21      98    b'chory'  b'1986-11-06'
## 4       28      74    b'chory'  b'1979-12-01'
## 5       16      55    b'chory'  b'1991-06-18'
## 6       25      71   b'zdrowy'  b'1982-01-30'
## 7       27      70   b'zdrowy'  b'1980-04-22'
## 8       21      59    b'chory'  b'1986-05-18'
## 9       24      65   b'zdrowy'  b'1983-03-29'
## 10      24      86    b'chory'  b'1983-03-27'
## 11      20      82   b'zdrowy'  b'1987-09-19'

Rozdział 2.6.9

import scipy.io as sc
from astropy.extern.six.moves.urllib import request

url = "http://www.biecek.pl/R/dane/daneMatlab.MAT"
open('daneMatlab.MAT', 'wb').write(request.urlopen(url).read())
daneMat = sc.loadmat('daneMatlab.MAT')
print(daneMat['normalny'].shape)
## (10, 10)

Rozdział 2.6.10

import pandas as pd

#dane = pd.read_sas('daneSAS',format='sas7bdat')