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.

  • 🔘 NumPy üzerine kurulu: Pandas, her Series ve DataFrame'in arkasındaki dizileri sağlayan NumPy'ye ihtiyaç duyar.
  • ☑️ İki yapı: Seriler tek bir etiketli boyutu saklar; Veri Çerçeveleri ise karışık türde satır ve sütunları saklar.
  • Tarih aralıkları: pd.date_range() fonksiyonu, başlangıç ​​tarihi, dönem sayısı ve frekanstan yola çıkarak bir indeks oluşturur.
  • 🧪 Önce kontrol edin: head(), tail() ve describe() fonksiyonları, herhangi bir analiz yapılmadan önce şekli, yayılımı ve yüzdelik dilimleri ortaya çıkarır.
  • Hassas bir şekilde dilimleyin: Köşeli parantez adları sütunları, `loc` etikete göre ve `iloc` konuma göre seçim yapar.
  • ⚠️ Sürüm notu: Pandas 2.2'den itibaren M frekans takma adı kullanımdan kaldırılmıştır; mevcut sürümler ME'yi beklemektedir.

Python Pandas Eğitimi: DataFrame, Tarih Aralığı ve Pandas Kullanımı

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.

Etiketli satır indeksi ve adlandırılmış sütunlara sahip Pandas DataFrame düzeni

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, ay M ve yıl Y
## 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]

SSS

Çağrı pd.read_csv() bir patika ile veya URLSütunları etiketlemek için adlar ekleyin, farklı bir ayırıcı için sep kullanın ve yalnızca ihtiyacınız olan sütunları tutmak için usecols kullanın.

isnull() fonksiyonu eksik değerleri işaretler, dropna() fonksiyonu etkilenen satırları veya sütunları siler ve fillna() fonksiyonu ise bir sabit veya sütun ortalaması gibi bir istatistik değeriyle değiştirir. Eksik girdiler NaN olarak yazdırılır.

`groupby()` fonksiyonu, satırları bir anahtar sütuna göre gruplara ayırır, her gruba sayım, toplam veya ortalama gibi bir toplama işlemi uygular ve ardından sonuçları yeni bir çerçevede birleştirir.

Bir mantıksal maske oluşturun ve parantez içinde iletin, örneğin df[df.Age == 30]. Maskeleri ampersand ve boru operatörleriyle birleştirin, sarmalayın.ping Parantez içindeki her karşılaştırma.

pd.merge() fonksiyonu, bir anahtar sütuna göre satırları eşleştirir. SQL `join` fonksiyonu `inner`, `left`, `right` veya `outer` olarak ayarlanarak kullanılır. `concat()` ise anahtarları eşleştirmek yerine çerçeveleri üst üste yığar.

df.to_csv('out.csv', index=False) virgül içeren bir dosya yazarken, df.to_excel('out.xlsx') bir çalışma sayfası oluşturur. (Bu kısım silinebilir.)ping Bu indeks, bir sonraki okumada isimsiz bir ilk sütunun oluşmasını önler.

Yapay zekâ asistanları yeni bir çerçeveyi profillendirir, çalıştırılmaya değer describe, groupby ve plot çağrılarını önerir ve garip veri tiplerine veya çok sayıda boş değere sahip sütunları işaretler. Her öneriyi ham verilerle karşılaştırarak doğrulayın.

Evet. GitHub Yardımcı Pilotu Basit bir yorumu çalışan Pandas koduna dönüştürür. Jupyter hücre. RevSonuca güvenmeden önce veri türlerini ve satır sayılarını inceleyin.

Bu yazıyı şu şekilde özetleyin: