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')