Links
📊

Tablo İşlemleri | Pandas

DataFrame üzerinden tablosal işlemler ve verilerin yönetimi

Tablo Oluşturma

import pandas as pd
# List ile tablo oluşturma
df = pd.DataFrame(<list>, columns=<list>)
df = pd.DataFrame(list(zip(<col1>, <col2>, <col3>, <col4>)))
df = pd.DataFrame(list(zip(<val_list>, <val_list>)), columns=<col_list>, index = <iname_list>) #
# Dict ile tablo oluşturma
df = pd.DataFrame(<dict>, index=<iname_list>)
df = pd.DataFrame({<col>: <val_list>, ...}, index=<iname_list>)
# Sütun değiştirme
df.columns = <list>
# Index değiştirme (ve df'e uygulama)
df.set_index(<col>, inplace=True)
# Index sıfırlama (ve df'e uygulama)
df.reset_index(inplace=True)
# Birden fazla index belirleme
df.set_index(['username', 'email'])
Kullacı tablosu örneği ```py from string import ascii_letters, digits import numpy as np import datetime usernames = ['alice36', 'bob_smith', 'eve'] passwords = [''.join(np.random.choice(list(ascii_letters + digits), 8)) for x in range(3)] creation_dates = [datetime.datetime.now().date() - datetime.timedelta(int(x)) for x in np.random.randint(0, 1500, 3)] df = pd.DataFrame({'username': usernames, 'password': passwords, 'date-created': pd.to_datetime(creation_dates)}) df ``` ![](../res/df_ex_tablo_users.png)
Numpy'dan tablo oluşturma ```py random_data = np.random.random((4,3)) df_random = pd.DataFrame(random_data, columns=['a', 'b', 'c']) df ``` ![](../res/df_ex_tablo_numpy.png)

Tablo Birleştirme

İşlem
Açıklama
pd.merge(left=<df1>,right=<df2>, left_on=<iname1>, right_on=<iname2>)
Kesişimi (Inner join)
pd.merge(left=<df1>,right=<df2>, how='left', left_on=<iname1>, right_on=<iname2>)
A ve kesim (Left join)
Kaynaklar: Pandas Merging Data

Tabloyu Bölme

Ana yapı df<işlem>
İşlem
Açıklama
.dtypes
Tablodaki özellikleri (attr) listeler
[<col>]
Sütun alma (pandas.core.series.Series)
mean()
Sütunların ortalama değerlerini alma
loc[<iname>]
İndex ismi ile veri okuma
.loc[[<iname>, ...], <col_list> ]
Tabloyu parçalama
.head()
Tablonun başını görüntüleme
.tail()
Tablonun sonunu görüntüleme

Tablodan Veri Alma

İşlem
Açıklama
[<col>]
Sütun alma (pandas.core.series.Series)
df[<col>][<i>]
col sütunundaki i. öğeye erişme
df.loc[<i>, <col>]
i. öğenin col verisine erişme
df.describe()
İstatistiksel verileri alma (count mean std min 25 50 75 max)

Tabloda Arama

İşlem
Açıklama
df.loc[df[<column_name>] == <some_value>]
Sütunun değeri eşit olanları listeleme
df.loc[df['column_name'].isin(some_values)]
df.loc[(df['column_name'] >= A) & (df['column_name'] <= B)]
df['column_name'] >= A & df['column_name'] <= B yapısı parantez olmadığından df['column_name'] >= (A & df['column_name']) <= B şeklinde algılanır.
Kaynak: Stackoverflow

Tablo ile İlgili Code Snippets

# Max / Sum yapıp verileri listeler
idx = pb_all_data.groupby(['post_code'])['items'].transform(max) == pb_all_data['items']
df_items_by_region = pb_all_data[idx]['items'] / pb_all_data.groupby('post_code').sum()['items']
items_by_region = []
for i in range(100):
x, y = df_items_by_region.index[i]
z = df_items_by_region[i]
items_by_region.append((x, y, z))
Kaynak: Stackoverflow