In [1]:
import pandas
In [3]:
pandas.read_csv('./sehir_cinsiyet.csv')
Out[3]:
boy kilo cinsiyet
0 185 85 erkek
1 174 65 kadin
2 180 95 kadin
3 168 58 kadin
4 175 80 erkek
5 170 70 erkek
6 169 75 erkek
7 183 74 erkek
8 180 80 erkek
9 170 60 kadin
In [4]:
df = pandas.read_csv('./sehir_cinsiyet.csv')
In [5]:
df
Out[5]:
boy kilo cinsiyet
0 185 85 erkek
1 174 65 kadin
2 180 95 kadin
3 168 58 kadin
4 175 80 erkek
5 170 70 erkek
6 169 75 erkek
7 183 74 erkek
8 180 80 erkek
9 170 60 kadin
In [6]:
print(df)
   boy  kilo cinsiyet
0  185    85    erkek
1  174    65    kadin
2  180    95    kadin
3  168    58    kadin
4  175    80    erkek
5  170    70    erkek
6  169    75    erkek
7  183    74    erkek
8  180    80    erkek
9  170    60    kadin
In [7]:
df.head()
Out[7]:
boy kilo cinsiyet
0 185 85 erkek
1 174 65 kadin
2 180 95 kadin
3 168 58 kadin
4 175 80 erkek
In [8]:
df.tail()
Out[8]:
boy kilo cinsiyet
5 170 70 erkek
6 169 75 erkek
7 183 74 erkek
8 180 80 erkek
9 170 60 kadin
In [10]:
df.shape
Out[10]:
(10, 3)
In [11]:
df.columns
Out[11]:
Index(['boy', 'kilo', 'cinsiyet'], dtype='object')
In [12]:
df.dtypes
Out[12]:
boy          int64
kilo         int64
cinsiyet    object
dtype: object
In [13]:
df['boy']
Out[13]:
0    185
1    174
2    180
3    168
4    175
5    170
6    169
7    183
8    180
9    170
Name: boy, dtype: int64
In [14]:
df['cinsiyet']
Out[14]:
0    erkek
1    kadin
2    kadin
3    kadin
4    erkek
5    erkek
6    erkek
7    erkek
8    erkek
9    kadin
Name: cinsiyet, dtype: object
In [15]:
cinsiyetler = df['cinsiyet']
In [16]:
cinsiyetler.head()
Out[16]:
0    erkek
1    kadin
2    kadin
3    kadin
4    erkek
Name: cinsiyet, dtype: object
In [18]:
df[['boy','kilo']] # alt küme alır ve çift köşeli parantez!!! (köşeli parantez içerisine liste alıyor)
Out[18]:
boy kilo
0 185 85
1 174 65
2 180 95
3 168 58
4 175 80
5 170 70
6 169 75
7 183 74
8 180 80
9 170 60
In [20]:
# df['boy','kilo'] # çalışmaz çünkü tek kolon değil
In [21]:
df[2:] 
Out[21]:
boy kilo cinsiyet
2 180 95 kadin
3 168 58 kadin
4 175 80 erkek
5 170 70 erkek
6 169 75 erkek
7 183 74 erkek
8 180 80 erkek
9 170 60 kadin
In [26]:
df[2:5]
Out[26]:
boy kilo cinsiyet
2 180 95 kadin
3 168 58 kadin
4 175 80 erkek
In [34]:
df.shape
Out[34]:
(10, 3)
In [40]:
df.loc[1] # seri döndürür (zaman serisi vs.)
Out[40]:
boy           174
kilo           65
cinsiyet    kadin
Name: 1, dtype: object

Seri döndürür, zaman serisi vs. dolayısıyla mesela df.loc[-1] çalışmaz.

In [41]:
df.loc[df.shape[0]-1] # -1 yerine bu yazılabilir
Out[41]:
boy           170
kilo           60
cinsiyet    kadin
Name: 9, dtype: object
In [42]:
df.iloc[3]#verilen satırı alır (row number) , loc ise row name alır (isim ile)
Out[42]:
boy           168
kilo           58
cinsiyet    kadin
Name: 3, dtype: object
In [43]:
df.ix[0] #eskiden kullanılıyordu artık iloc veya loc kullanılıyord
/Users/sadievrenseker/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:1: DeprecationWarning: 
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
  """Entry point for launching an IPython kernel.
Out[43]:
boy           185
kilo           85
cinsiyet    erkek
Name: 0, dtype: object
In [45]:
df.iloc[[2,5,6]]
Out[45]:
boy kilo cinsiyet
2 180 95 kadin
5 170 70 erkek
6 169 75 erkek

Veri bilimi başlangıcı

1. Giriş

Örnek 1: Cinsiyete göre boy ve kilo ortalamalarını almak istiyor olalım...

In [47]:
df.groupby('cinsiyet') # sonuç göstermez çünkü nasıl aggregate edeceği belirtilmemiş
Out[47]:
<pandas.core.groupby.DataFrameGroupBy object at 0x107018a58>
In [48]:
df.groupby('cinsiyet')['boy'] # cinsiyete göre gruplanmış verinin sadece boy kolonunu alır
Out[48]:
<pandas.core.groupby.SeriesGroupBy object at 0x10712e518>
In [49]:
df.groupby('cinsiyet')['boy'].mean()
Out[49]:
cinsiyet
erkek    177
kadin    173
Name: boy, dtype: int64
In [50]:
df.groupby('cinsiyet').mean()
Out[50]:
boy kilo
cinsiyet
erkek 177.0 77.333333
kadin 173.0 69.500000
In [51]:
df.groupby('cinsiyet').median()
Out[51]:
boy kilo
cinsiyet
erkek 177.5 77.5
kadin 172.0 62.5
In [55]:
df.groupby('cinsiyet').max()
Out[55]:
boy kilo
cinsiyet
erkek 185 85
kadin 180 95

2. Veri Birleştirme

In [58]:
df1 = pandas.read_csv('./pandas/data/concat_1.csv')
df2 = pandas.read_csv('./pandas/data/concat_2.csv')
df3 = pandas.read_csv('./pandas/data/concat_3.csv')
In [60]:
df1
Out[60]:
A B C D
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
In [61]:
pandas.concat([df1,df2,df3])
Out[61]:
A B C D
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
0 a4 b4 c4 d4
1 a5 b5 c5 d5
2 a6 b6 c6 d6
3 a7 b7 c7 d7
0 a8 b8 c8 d8
1 a9 b9 c9 d9
2 a10 b10 c10 d10
3 a11 b11 c11 d11
In [62]:
pandas.concat([df1,df3,df1,df2])
Out[62]:
A B C D
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
0 a8 b8 c8 d8
1 a9 b9 c9 d9
2 a10 b10 c10 d10
3 a11 b11 c11 d11
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
0 a4 b4 c4 d4
1 a5 b5 c5 d5
2 a6 b6 c6 d6
3 a7 b7 c7 d7
In [65]:
rdf=pandas.concat([df1,df3,df1,df2])
In [66]:
rdf.shape
Out[66]:
(16, 4)
In [63]:
pandas.concat([df1,df3,df1,df2],axis=1)
Out[63]:
A B C D A B C D A B C D A B C D
0 a0 b0 c0 d0 a8 b8 c8 d8 a0 b0 c0 d0 a4 b4 c4 d4
1 a1 b1 c1 d1 a9 b9 c9 d9 a1 b1 c1 d1 a5 b5 c5 d5
2 a2 b2 c2 d2 a10 b10 c10 d10 a2 b2 c2 d2 a6 b6 c6 d6
3 a3 b3 c3 d3 a11 b11 c11 d11 a3 b3 c3 d3 a7 b7 c7 d7
In [67]:
cdf = pandas.concat([df1,df3,df1,df2],axis=1)
In [68]:
cdf['A']
Out[68]:
A A A A
0 a0 a8 a0 a4
1 a1 a9 a1 a5
2 a2 a10 a2 a6
3 a3 a11 a3 a7
In [69]:
df1.columns
Out[69]:
Index(['A', 'B', 'C', 'D'], dtype='object')
In [73]:
df1.columns = ['A', 'X','C','D']
In [74]:
df1
Out[74]:
A X C D
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
In [75]:
cdf
Out[75]:
A B C D A B C D A B C D A B C D
0 a0 b0 c0 d0 a8 b8 c8 d8 a0 b0 c0 d0 a4 b4 c4 d4
1 a1 b1 c1 d1 a9 b9 c9 d9 a1 b1 c1 d1 a5 b5 c5 d5
2 a2 b2 c2 d2 a10 b10 c10 d10 a2 b2 c2 d2 a6 b6 c6 d6
3 a3 b3 c3 d3 a11 b11 c11 d11 a3 b3 c3 d3 a7 b7 c7 d7
In [76]:
rdf
Out[76]:
A B C D
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
0 a8 b8 c8 d8
1 a9 b9 c9 d9
2 a10 b10 c10 d10
3 a11 b11 c11 d11
0 a0 b0 c0 d0
1 a1 b1 c1 d1
2 a2 b2 c2 d2
3 a3 b3 c3 d3
0 a4 b4 c4 d4
1 a5 b5 c5 d5
2 a6 b6 c6 d6
3 a7 b7 c7 d7
In [77]:
pandas.concat([df1,df3,df1,df2])
Out[77]:
A B C D X
0 a0 NaN c0 d0 b0
1 a1 NaN c1 d1 b1
2 a2 NaN c2 d2 b2
3 a3 NaN c3 d3 b3
0 a8 b8 c8 d8 NaN
1 a9 b9 c9 d9 NaN
2 a10 b10 c10 d10 NaN
3 a11 b11 c11 d11 NaN
0 a0 NaN c0 d0 b0
1 a1 NaN c1 d1 b1
2 a2 NaN c2 d2 b2
3 a3 NaN c3 d3 b3
0 a4 b4 c4 d4 NaN
1 a5 b5 c5 d5 NaN
2 a6 b6 c6 d6 NaN
3 a7 b7 c7 d7 NaN
In [78]:
rdf.to_csv('birlesik.csv')
In [83]:
merged_data = site.merge(visited, left_on='name', right_on='site')
In [84]:
merged_data
Out[84]:
name lat long ident site dated
0 DR-1 -49.85 -128.57 619 DR-1 1927-02-08
1 DR-1 -49.85 -128.57 622 DR-1 1927-02-10
2 DR-1 -49.85 -128.57 844 DR-1 1932-03-22
3 DR-3 -47.15 -126.72 734 DR-3 1939-01-07
4 DR-3 -47.15 -126.72 735 DR-3 1930-01-12
5 DR-3 -47.15 -126.72 751 DR-3 1930-02-26
6 DR-3 -47.15 -126.72 752 DR-3 NaN
7 MSK-4 -48.87 -123.40 837 MSK-4 1932-01-14