Bu makale, Veri Bilimi Blogathon
Giriş
Eh, yapabileceğiniz iyi bir olasılık var!
Python'u birincil programlama dili olarak kullanan veri bilimcileri için Pandas paketi, sahip olunması gereken bir veri analiz aracıdır. Pandas paketi, bir veri bilimcisinin ihtiyaç duyduğu her şeye sahiptir ve her kurs bize ilk başta onu nasıl kullanacağımızı öğretti. Çok büyük, güçlü ve hayal edebileceğiniz hemen hemen her tablo manipülasyonunu gerçekleştiriyor. Ancak bu genişlik bazen dezavantaj olabilir.
Nadir görülen uç durumları, farklı senaryoları çözen birçok güzel özelliğe sahiptir.
Pandaların en önemli dezavantajlarından biri, büyük veri kümeleriyle mücadele etmesidir, çünkü pandalar veri yapılarını RAM'de depolar, bu veri boyutları büyüdükçe yetersiz hale gelebilir. Bunun için PySpark veya Dask kullanın.
Pandalar paketi yaygın olarak kullanılsa da, daha az kullanıldığı için ya da varlığından habersiz oldukları için insanların gözden kaçırabileceği birçok işlev var. Bu gönderi, sizi bu özelliklerle yeniden tanıştırmayı ve Pandaların önceden bildiğinizden çok daha yetkin olduğunu göstermeyi amaçlıyor.
Pipe
Pandalarda veri temizliğini özlü ve kompakt bir şekilde gerçekleştirmek için, birden fazla işlevi tek bir işlemde birleştirmenize izin veren Pipe işlevleri kullanılabilir.
Örneğin, drop_duplicates, encode_categoricals, remove_outliers gibi argümanlarını kabul eden işlevleri uygulamayı seviyorsanız.
df_cleaned = (diamonds.pipe(drop_duplicates). pipe(remove_outliers, ['price', 'carat', 'depth']). pipe(encode_categoricals, ['cut', 'color', 'net']) )
çarpanlara ayır
Bu işlev, Sklearns Label Encoder'a bir alternatiftir.
# Sondaki [0] işaretine dikkat edin elmaslar["cut_enc"] = pd.factorize(elmas["cut"])[0] >>> elmaslar["cut_enc"].sample(5) 52103 2 39813 0 31843 0 10675 0 6634 0 Ad: cut_enc, dtype: int64
Sonuçları çarpanlara ayır bir dizi değer: kodlanmış değer ve benzersiz kategorilerin bir listesi.
değerler, benzersiz = pd.factorize(elmas["cut"], sort=True) >>> değerler[:10] dizi([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> benzersiz ['İdeal', 'Premium', 'Çok İyi', 'İyi', 'Orta']
Patlamak
Fotoğraf Edewaa koruyucusu on Unsplash
Explode ilginç bir isme sahip bir fonksiyondur. Bir örnekle başlayalım ve ardından bir açıklama yapalım:
df = pd.Series([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("kirli") >>> df
Özellik sütununda listelerle gösterilen iki satır vardır. Bu tür veriler, birkaç sorunun birden fazla seçeneği kabul ettiği anketlerde bulunur.
>>> df.explode("kirli", yoksay_index=Doğru)
Bu işlev, bir dizi değer içeren bir hücreyi alır ve birden çok satırda patlar. Sayısal bir dizinin sırasını korumak için, Doğru olarak dikkate alma_dizini kullanın.
Arasında
Bir aralıktaki sayısal özellikleri boole indeksleme için, işte kullanışlı bir fonksiyon:
# Fiyatı 3500 ile 3700 dolar arasında olan elmasları alın elmas[elmas["fiyat"].between(3500, 3700, dahil="neither")].sample(5)
T
DataFrame, devrik olarak bilinen basit bir T niteliğine sahiptir. Sık kullanmayabiliriz, açıklama yöntemi veri çerçevelerini görüntülerken yardımcı olur.
>>> boston.describe().T.head(10)
Panda Seçenekleri
Varsayılan davranışları değiştirmeye ve değiştirmeye yardımcı olan küresel panda ayarları kullanılabilir.
>>> dir(pd.options) ['hesaplama', 'görüntüleme', 'io', 'mod', 'çizim']
5 modülden oluşmaktadır. Ekranın altındaki mevcut seçenekleri görelim. Kullanılabilir birçok seçenek var, ancak çoğunlukla max_columns kullanıyorum.
>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'Genişlik']
Çoğu kişi max_columns ve kesinlik kullanır
# Sütun sayısını görüntülemek için sınırı kaldırın pd.options.display.max_columns = Yok # Yalnızca ondalıktan sonra 5 sayı göster pd.options.display.precision = 5 # bilimsel gösterimden kurtulur
Convert_dtypes
Pandaların bazı sütunları nesne veri türleri olarak işaretlemek gibi can sıkıcı bir alışkanlığı olduğunun hepimiz farkındayız. Türlerini doğrudan tanımlamak yerine, en iyi veri türünü çıkarmaya çalışan convert dtypes yöntemini kullanabilirsiniz:
sample = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> sample.dtypes StationId nesnesi CO float64 O3 float64 AQI_Bucket nesne türü: nesne >>> sample.convert_dtypes().dtypes StationId string CO float64 O3 float64 AQI_Bucket string dtype: object
Select_dtypes
Adından, işlevin ne yaptığının açık olduğuna inanıyorum. Belirli veri türlerini içeren veya atlayan sütunları belirtmek için dahil etme ve hariç tutma seçeneklerini kullanabilirsiniz.
Yalnızca np.number içeren sayısal sütunları seçin, örneğin:
# Yalnızca sayısal sütunları seçin diamonds.select_dtypes(include=np.number).head()
Maske
Bu işlev, özel koşulun sağlanmadığı değerlerin değiştirilmesine yardımcı olur.
# Örnek veri oluşturma yaşları = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("yaşlar") yaşları
Yukarıdaki işlemi gerçekleştirdikten sonra.
Min ve Maks
Min ve max iyi bilinmesine rağmen, bazı uç durumlar için daha iyi özelliklere sahiptir.
index = ["Diamonds", "Titanic", "Iris", "Kalp Hastalığı", "Kredi Varsayılanı"] kitaplıklar = ["XGBoost", "CatBoost", "LightGBM", "Sklearn GB"] df = pd.DataFrame ( {lib: np.random.uniform(90, 100, 5) kütüphanelerdeki lib için}, index=index ) >>> df
Yukarıdaki kurgusal DataFrame, beş veri kümesinde dört farklı gradyan artırma kitaplığının sonuçlarını gösterir. Her veri kümesinde en iyisini yapan paketi arıyoruz. Bunu max ile klas bir şekilde nasıl başaracağınız aşağıda açıklanmıştır:
>>> df.max(axis=1) Diamonds 99.52684 Titanic 99.63650 Iris 99.10989 Kalp Hastalığı 99.31627 Kredi Temerrüdü 97.96728 dtype: float64
En Büyük ve En Küçük
En büyük ve en küçük, bir değişkenin üst N veya ~(üst N) değerlerini görüntülemek için yararlıdır.
elmaslar.nlargest(5, "fiyat")
elmaslar.nsmallest(5, "fiyat")
Idxmax ve Idxmin
Bir sütunda max veya min aradığınızda pandalar en büyük/en küçük sayıyı döndürür. Ancak, bu işlevlerin sağlamadığı min/maks konumuna ihtiyaç duyduğunuz durumlar vardır.
Bunun yerine idxmax/idxmin kullanabilirsiniz:
>>> diamonds.price.idxmax() 27749 >>> diamonds.carat.idxmin() 14
Value_Counts
Eksik değerlerin yüzdesini bulmanın yaygın bir yolu, isnull ile toplamı birleştirip dizinin boyutuna bölmektir.
Ancak, ilgili bağımsız değişkenlerle değer_sayısı aynı şeyi yapar:
konut = pd.read_csv("train.csv") >>> konut["FireplaceQu"].value_counts(dropna=Yanlış, normalize=Doğru) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 Ad: FireplaceQu, dtype: şamandıra64
Klips
Klip işlevi, bir aralığın dışındaki aykırı değerleri bulmaya ve bunları kesin sınırlarla değiştirmeye yardımcı olur.
>>> yaşlar.klip(50, 60)
At_time ve Betweeen_time
Bu işlevler, yüksek ayrıntı düzeyine sahip zaman serileriyle çalışırken yardımcı olur.
at_time, belirli bir tarih veya saatte değerlerin alınmasına yardımcı olur.
index = pd.date_range("2021-08-01", period=100, freq="H") df = pd.DataFrame({"col": list(range(100))}, index=index) >> > df.kafa()
>>> df.at_time(“15:00”)
Ara_zaman, özel bir aralıktaki satırları getirmek için kullanılır.
tarihten itibaren tarih saatini içe aktar >>> df.between_time("09:45", "12:00")
Bdate_aralığı
Bu işlev, iş günü sıklığına sahip zaman serisi endeksleri oluşturmaya yardımcı olur. Finans dünyası bu tür bir sıklığa sahiptir. Bu nedenle, bu işlev, zaman serilerini yeniden indeksleme işleviyle yeniden indeksleme sırasında yardımcı olabilir.
series = pd.bdate_range("2021-01-01", "2021-01-31") # Bir aylık süre >>> len(series) 21
At ve Iat
Bu iki erişimci, loc ve iloc'tan önemli ölçüde daha hızlıdır. Ancak, bir dezavantajı var. Bir seferde yalnızca bir değer seçmenize veya değiştirmenize izin verirler:
# [indeks, etiket] >>> diamonds.at[234, "cut"] 'İdeal' # [indeks, dizin] >>> diamonds.iat[1564, 4] 61.2 # Fiyat sütununun 16541. satırını değiştirin >> > elmaslar.at[16541, "fiyat"] = 10000
Args sıralama
Bu işlev, bir dizi özelliği sıralayacak dizinleri çıkarmaya yardımcı olur.
Tips.reset_index(inplace=Doğru, drop=True) sort_idx = ipuçları["total_bill"].argsort(kind="mergesort") # Şimdi, "ipuçlarını" total_bill ipuçlarına göre sıralayın.iloc[sort_idx].head()
kedi aksesuarı
Pandalar, str veya dt gibi erişimcileri kullanarak tarihlerde ve dizelerde python'un yerleşik işlevlerine izin verir.
>>> diamonds.dtypes karat float64 kesim kategorisi renk kategorisi netlik kategorisi derinlik float64 tablo float64 fiyat int64 x float64 y float64 z float64 cut_enc int64 dtype: nesne
Kategorik sütunlarda cat accessor kullanılarak birçok özel fonksiyon kullanılabilir. Benzersiz bulmak için kategoriler, özellikleri yeniden adlandırmak için rename_categoriler gibi işlevlere sahiptir.
elmaslar["new_cuts"] = elmaslar["cut"].cat.rename_categories(list("ABCDE")) >>> elmaslar["new_cuts"].cat.categories Index(['A', 'B', ' C', 'D', 'E'], dtype='nesne')
Altındaki daha fazla işlev listesi için buna göz atın kedi erişimcisi.
Sıkmak
Squeeze, nadir ancak ağırlaştırıcı uç durumlarda kullanılan bir işlevdir.
Bir DataFrame'i alt kümelemek için kullanılan bir koşuldan tek bir değer döndürüldüğünde, bu, bu durumlardan biridir. Aşağıdaki senaryoyu göz önünde bulundurun:
alt küme = elmaslar.loc[elmas.index >> alt küme
Yalnızca bir hücre olsa bile DataFrame'i döndürün. Fiyatı elde etmek için artık hem sütun adı hem de dizin ile birlikte .loc'u kullanmanız gerektiğinden sakıncalıdır.
Sıkıştırmayı biliyorsan yapmana gerek yok. Bu işlev kullanılarak tek hücreli bir DataFrame veya Series'den bir eksen kaldırılabilir. Aşağıdaki senaryoyu göz önünde bulundurun:
>>> subset.squeeze() 326
Kaldırılacak ekseni belirtmek mümkündür. Artık sadece skaler dönmüştü.
>>> subset.squeeze("sütunlar") # veya "satırlar" 0 326 Ad: fiyat, dtype: int64
Bu işlevin yalnızca tekli değerlere sahip Seriler veya DataFrame için çalıştığını unutmayın.
Excel_yazar
Excel dosyaları oluşturmak ve içine DataFrame yazmak için genel bir sınıftır. Düşünün, bu iki veri setimiz var.
# İki veri kümesini yükleyin elmaslar = sns.load_dataset("elmas") ipuçları = sns.load_dataset("ipuçları") # Yazar olarak pd.ExcelWriter("data/data.xlsx") ile aynı excel dosyasına yazın: diamonds.to_excel (yazar, sayfa_adı="elmas") ipuçları.to_excel(yazar, sayfa_adı="ipuçları")
İster yeni bir dosyaya ihtiyacınız olsun, ister mevcut bir dosyayı değiştirin, bir sayfa varsa ne olur, kullanılacak DateTime biçimini belirtmek için özelliklere sahiptir. Şuna göz at belgeleme daha fazla ayrıntı için.
Sonuç
Pandaların kapsamlı bir özeti değildir ve belgeleme kod ve özellikler hakkında daha fazla bilgi içerir. Burada sağlanan kod parçacıklarının farklı varyasyonlarını ve çeşitli parametreleri denemenizi tavsiye ederim. Bunu yaparak pandaların gücünü tam olarak anlayabilirsiniz.
Dask ve datatable gibi kütüphaneler, büyük veri kümelerini işlemek için gösterişli yeni özellikleriyle yavaş yavaş Pandaların yerini alıyor, Pandalar Python veri bilimi topluluğunda en yaygın olarak kullanılan veri işleme aracı olmaya devam ediyor. Mevcut SciPy yığınına ne kadar iyi uyduğu için kitaplık, diğer paketlerin takip etmesi ve oluşturması için bir paradigma görevi görür.
Umarım bu yazıyı aydınlatıcı bulmuşsunuzdur ve okuduğunuz için teşekkür ederim.
Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır.
İlgili bağlantılar
- "
- 100
- 7
- Türkiye
- analiz
- analytics
- argümanlar
- göre
- İYİ
- artırılması
- boston
- inşa etmek
- çağrı
- durumlarda
- değişiklik
- Temizlik
- kod
- Sütun
- ortak
- topluluk
- hesaplamak
- Oluşturma
- veri
- veri analizi
- veri bilimi
- veri bilimcisi
- Tarih
- DID
- Hastalık
- dolar
- kenar
- Excel
- deneme
- adil
- Özellikler(Hazırlık aşamasında)
- Özellikler
- mali
- Ad
- takip et
- biçim
- işlev
- Küresel
- Tercih Etmenizin
- Büyümek
- kullanma
- kullanışlı
- okuyun
- Yüksek
- Ne kadar
- Nasıl Yapılır
- HTTPS
- indeks
- bilgi
- IT
- anahtar
- dil
- büyük
- öğrenme
- Kütüphane
- Liste
- Listeler
- yük
- borç
- makine öğrenme
- hile
- maske
- medya
- Yeni Özellikler
- sayılar
- Opsiyonlar
- Diğer
- paradigma
- İnsanlar
- boru
- güç kelimesini seçerim
- Hassas
- Premium
- mevcut
- fiyat
- Programlama
- Python
- RAM
- menzil
- Okuma
- Sonuçlar
- Bilim
- bilim adamları
- Dizi
- Basit
- beden
- So
- ÇÖZMEK
- başlama
- mağaza
- zaman
- ipuçları
- üst
- unicode
- us
- değer
- Görüntüle
- DSÖ
- içinde
- çalışır
- Dünya
- yazar
- yazı yazıyor
- X