Python Pandas Eğitimi: DataFrame, Tarih Aralığı ve Kullanımı
⚡ Akıllı Özet
Pandas açık kaynaklı bir kütüphanedir. Python Tablo halindeki verileri işlemek için kullanılan bir kütüphanedir. Bu kütüphane, Series ve DataFrame yapılarını, tarih aralıklarını, inceleme yardımcılarını ve bu kılavuz boyunca gösterilen dilimleme, silme, birleştirme, sıralama ve yeniden adlandırma işlemlerini sağlar.

Pandalar nedir? Python?
Pandalar Veri manipülasyonu ve analizini gerçekleştirmenizi sağlayan açık kaynaklı bir kütüphanedir. PythonSayısal tabloları ve zaman serilerini kapsayan bu araç, veri oluşturmayı, işlemeyi ve düzenlemeyi kolaylaştırır ve şu temeller üzerine inşa edilmiştir: DiziDolayısıyla Pandas'ın çalışması için NumPy'nin mevcut olması gerekir.
Pandaları neden kullanmalı?
Veri bilimcileri Pandalardan yararlanıyor Python Aşağıdaki avantajlar için:
- Eksik verileri kolayca işler
- Tek boyutlu veriler için Series, çok boyutlu veriler için ise DataFrame kullanır.
- Verileri dilimlemek için etkili bir yol sağlar
- Verileri birleştirmek, birleştirmek veya yeniden şekillendirmek için esnek bir yol sağlar
- Güçlü bir zaman serisi araç seti içerir.
Özetle, Pandas güçlü, kullanımı kolay veri yapıları ve bunlar üzerinde hızlı işlem yapma imkanı sunar; bu nedenle çoğu platformda temel unsur olarak yer alır. Python veri analizi çalışır.
Pandas Nasıl Kurulur
Pandas, Anaconda ve çoğu yönetilen notebook hizmetiyle birlikte gelir, bu nedenle genellikle zaten yüklüdür. İçe aktarma başarısız olursa, aşağıdaki komutlardan biri onu ekler. Oluşturulan ortam TensorFlow nasıl kurulur Pandaları da içerir.
- pip:
pip install pandas - Anakonda:
conda install -c anaconda pandas - İçinde Jupyter defter hücre:
import sys !conda install --yes --prefix {sys.prefix} pandas
Pandas DataFrame nedir?
Pandas DataFrame, sütunları farklı türler içerebilen iki boyutlu etiketli bir veri yapısıdır. Verileri tablo formatında saklamanın standart yoludur: satırlar gözlemleri, sütunlar ise bilgileri adlandırır. Örneğin, fiyat 1, bir sütunun adı olabilir ve 2, 3, 4 fiyat değerleri olabilir.
Veri çerçeveleri istatistikçiler ve diğer veri uzmanları tarafından iyi bilinen bir kavramdır. Aşağıdaki resim bu şekli göstermektedir: yan tarafta etiketlenmiş satır indeksi ve üst kısımda adlandırılmış sütunlar.
Seri Nedir?
Seri (Series), tek boyutlu bir veri yapısıdır. Tamsayı, ondalık sayı veya dize gibi herhangi bir veri türünü tutabilir ve bir hesaplama yapmak veya tek boyutlu bir dizi döndürmek istediğinizde kullanışlıdır. Tanım gereği, bir Seri birden fazla sütuna sahip olamaz; bu durumda DataFrame yapısını kullanın.
Pandas Series yapıcı fonksiyonu aşağıdaki parametreleri alır:
- Veri: Liste, sözlük veya skalar değer olabilir.
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
İndeks eklemek için şunu kullanabilirsiniz: indexBu, satırları adlandırır ve uzunluğu sütunun uzunluğuna eşit olmalıdır.
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Aşağıda, üçüncü satırında eksik değer bulunan bir Pandas Serisi oluşturuyorsunuz. Eksik değerler Python şu şekilde gösterilir: NaN, ve np.nan NumPy'den gelen bir örnek yapay olarak bir tane oluşturur.
pd.Series([1,2,np.nan])
Çıktı
0 1.0 1 2.0 2 NaN dtype: float64
Pandas DataFrame'i oluşturun
Bir NumPy dizisini şu şekilde bir DataFrame'e dönüştürebilirsiniz: pd.DataFrame()Bunun tersi de mümkündür: bir DataFrame'i tekrar bir diziye dönüştürmek için şunu kullanın: np.array()ya da df.to_numpy()Bu, Pandas'ın mevcut belgelerinde de önerilen yöntemdir.
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
Bir sözlük, girdi olarak da aynı derecede işe yarar. pd.DataFrame().
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
| Yaş | İsim | |
|---|---|---|
| 0 | 30 | John |
| 1 | 40 | Demirci |
Panda Aralığı Verileri
Pandas, zaman serisinin indeksini oluşturan bir tarih aralığı oluşturmak için kullanışlı bir API'ye sahiptir. Çağrı şu şekilde yapılır:
pd.date_range(start, periods, freq):
- İlk parametre başlangıç tarihidir
- İkinci parametre ise dönem sayısıdır (bitiş tarihi belirtilmişse isteğe bağlıdır)
- Son parametre ise frekanstır: gün
D, ayMve yılY
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
Çıktı
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
Çıktı
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
Sürüm notu: ay takma adı M Yukarıda kullanılan yöntem Pandas 2.2'den itibaren kullanımdan kaldırılmış ve Pandas 3.0'da tamamen silinmiştir. Mevcut sürümlerde bu yöntem işe yaramaz. freq='ME' Ay sonu için; ortaya çıkan endeks aynıdır.
Verileri İnceleme
Bir veri setinin başını veya sonunu şu şekilde kontrol edebilirsiniz: head() or tail() Aşağıdaki Pandas örneğinde gösterildiği gibi, DataFrame üzerinde çağrılır.
) 1 Adım NumPy kullanarak rastgele bir dizi oluşturun. Dizi 4 sütun ve 6 satırdan oluşmaktadır.
random = np.random.randn(6,4)
) 2 Adım Ardından Pandas kullanarak bir DataFrame oluşturuyorsunuz.
Kullanım dates_m İndeks olarak kullanıldığından, her satıra bir tarihe karşılık gelen bir isim verilir ve 4 sütun da bu şekilde adlandırılır. columns argüman.
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Çünkü np.random.randn() Tohum olmadan çalıştırırsanız, rakamlarınız burada yazılanlardan farklı olacaktır. Arayın np.random.seed(0) Öncelikle, sabit bir seti yeniden üretmek istiyorsanız.
) 3 Adım Baş fonksiyonunu kullanma
df.head(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | 1.139433 | 1.318510 | -0.181334 | 1.615822 |
| 2030-02-28 | -0.081995 | -0.063582 | 0.857751 | -0.527374 |
| 2030-03-31 | -0.519179 | 0.080984 | -1.454334 | 1.314947 |
) 4 Adım kuyruk fonksiyonunu kullanma
df.tail(3)
| A | B | C | D | |
|---|---|---|---|---|
| 2030-04-30 | -0.685448 | -0.011736 | 0.622172 | 0.104993 |
| 2030-05-31 | -0.935888 | -0.731787 | -0.558729 | 0.768774 |
| 2030-06-30 | 1.096981 | 0.949180 | -0.196901 | -0.471556 |
) 5 Adım Veriler hakkında ipucu edinmenin mükemmel bir yolu şudur: describe()Bu, veri setinin sayısını, ortalamasını, standart sapmasını, minimum ve maksimum değerlerini ve yüzdelik dilimlerini rapor eder.
df.describe()
| A | B | C | D | |
|---|---|---|---|---|
| saymak | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
| ortalama | 0.002317 | 0.256928 | -0.151896 | 0.467601 |
| std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
| dk | -0.935888 | -0.731787 | -1.454334 | -0.527374 |
| 25% | -0.643880 | -0.050621 | -0.468272 | -0.327419 |
| 50% | -0.300587 | 0.034624 | -0.189118 | 0.436883 |
| 75% | 0.802237 | 0.732131 | 0.421296 | 1.178404 |
| maksimum | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
Verileri Dilimle
Dilimleme, bir DataFrame'den satır veya sütunların bir alt kümesini çıkarır. Sütun adını kullanarak örnek alabilirsiniz.tracAşağıdaki Pandas örneğinde gösterildiği gibi, tek sütun halinde.
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
Birden fazla sütun seçmek için çift köşeli parantez kullanmanız gerekir. [[..,..]]İlk çift, sütun seçmek istediğinizi; ikinci çift ise hangi sütunların döndürüleceğini belirtir.
df[['A', 'B']]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Satırları iki nokta üst üste işaretiyle dilimleyebilirsiniz. Aşağıdaki kod ilk üç satırı döndürür.
### using a slice for row
df[0:3]
| A | B | C | D | |
|---|---|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 | 0.572301 | -0.031827 |
| 2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
| 2030-03-31 | 0.767534 | -0.940617 | 0.227255 | -0.341532 |
MKS loc Bu erişim yöntemi, sütunları isimlerine göre seçer. Her zamanki gibi, virgülden önceki değer satırları, virgülden sonraki değer ise sütunları temsil eder ve birden fazla sütun seçmek için köşeli parantezler gereklidir.
## Multi col df.loc[:,['A','B']]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Birden fazla satır ve sütun seçmek için başka bir yöntem daha vardır. iloc[] Sütun adları yerine tamsayı konumlarını kullanır, bu nedenle aşağıdaki kod yukarıdakiyle aynı DataFrame'i döndürür.
df.iloc[:, :2]
| A | B | |
|---|---|---|
| 2030-01-31 | -0.168655 | 0.587590 |
| 2030-02-28 | 0.689585 | 0.998266 |
| 2030-03-31 | 0.767534 | -0.940617 |
| 2030-04-30 | 0.557299 | 0.507350 |
| 2030-05-31 | -1.547836 | 1.276558 |
| 2030-06-30 | 0.511551 | 1.572085 |
Bir Sütun Bırakın
Sütunları şu şekilde silebilirsiniz: df.drop()İsimleri sırayla geçirerek columns argüman.
df.drop(columns=['A', 'C'])
| B | D | |
|---|---|---|
| 2030-01-31 | 0.587590 | -0.031827 |
| 2030-02-28 | 0.998266 | 0.475975 |
| 2030-03-31 | -0.940617 | -0.341532 |
| 2030-04-30 | 0.507350 | -0.296035 |
| 2030-05-31 | 1.276558 | 0.523017 |
| 2030-06-30 | 1.572085 | -0.594772 |
birbirine bağlama
İki DataFrame'i şu şekilde birleştirebilirsiniz: pd.concat()Öncelikle iki çerçeveyi oluşturun.
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
Ardından bunları birleştirin.
df_concat = pd.concat([df1,df2]) df_concat
| Yaş | isim | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Demirci |
| 2 | 50 | Paul |
| 3 | 26 | Adem |
| 4 | 11 | Demirci |
Çoğaltmaları Bırak
Bir veri kümesi yinelenen bilgiler içerdiğinde, drop_duplicates() Tekrarlanan satırları hariç tutmanın kolay bir yoludur. df_concat Aynı gözlemin tekrarını içeriyor: Smith iki kez görünür name sütun.
df_concat.drop_duplicates('name')
| Yaş | isim | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Demirci |
| 2 | 50 | Paul |
| 3 | 26 | Adem |
Değerleri Sırala
Çerçeveleri şu şekilde sıralayabilirsiniz: sort_values(). Bunu not et Age Burada metin olarak oluşturulduğu için satırlar metin sırasına göre sıralanır.
df_concat.sort_values('Age')
| Yaş | isim | |
|---|---|---|
| 4 | 11 | Demirci |
| 0 | 25 | John |
| 3 | 26 | Adem |
| 1 | 30 | Demirci |
| 2 | 50 | Paul |
Sütunları Yeniden Adlandır
Kullanım rename() Pandas'ta bir sütunu yeniden adlandırmak için. Her çiftte ilk değer mevcut sütun adı, ikinci değer ise yeni sütun adıdır.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
| Yaş_kişi | Soyadı | |
|---|---|---|
| 0 | 25 | John |
| 1 | 30 | Demirci |
| 2 | 50 | Paul |
| 3 | 26 | Adem |
| 4 | 11 | Demirci |
Pandas Metotları Hızlı Referans Kılavuzu
Bu tablo, her bir yaygın görevi, o görevi gerçekleştiren Pandas yöntemiyle eşleştirir.
| Görev | Yöntem |
|---|---|
| veri içe aktar | okuma_csv |
| seri oluştur | Dizi |
| Veri Çerçevesi Oluştur | Veri çerçevesi |
| Tarih aralığı oluştur | tarih aralığı |
| dönüş kafası | baş |
| dönüş kuyruğu | kuyruk |
| Tanımlamak | tanımlamak |
| adını kullanarak dilimle | veriadı['sütunadı'] |
| Satırları kullanarak dilimleme | veri_adı[0:5] |

