Pandalar read_clipboard kullanarak Stack Overflow sorularına nasıl etkili bir şekilde veri yükleyebilirim?
Stack Overflow'daki pek çok panda sorusunun, verilerinin yalnızca birkaç satırını metin olarak içerdiğini ve onu üretmek / yeniden üretmek için eşlik eden kod olmadan, metin olarak içerdiğini fark ettim. read_clipboardBaşlık adlarında beyaz boşluklar veya sütunlardaki listeler gibi Python nesneleri gibi birçok durumda verileri okumak için bu işlevi etkin bir şekilde nasıl çağıracağımı bilemiyorum , ancak çözemiyorum.
pd.read_clipboard
Geleneksel olmayan biçimlerde yapıştırılan verileri, varsayılan bağımsız değişkenleri kullanarak kolay okumaya izin vermeyen verileri okumak için nasıl daha etkili bir şekilde kullanabilirim ? read_clipboard
Kısa gelen durumlar var mı?
Yanıtlar
read_clipboard: Yeni başlayanların rehberi
read_clipboardpandalar etiketiyle soruları yanıtlamaya başlayan herkes için gerçekten kurtarıcı bir lütuftur . Maalesef, pandaların gazileri, sorularda verilen verilerin, gönderilen verilerin formatındaki çeşitli komplikasyonlar nedeniyle bir terminale girmenin her zaman kolay olmadığını da biliyorlar.
Neyse ki, read_clipboard
bu durumların çoğunu mümkün (ve kolay) yapan argümanlar var. İşte bazı yaygın kullanım durumları ve bunlara karşılık gelen argümanlar.
Yaygın Kullanım Durumları
read_clipboard
kullanımları read_csv
CSV veri ayrıştırma teknikleri bir çok gibi, burada da geçerlidir, böylece boşluk ayırıcı ile kaputun altında,
verilerdeki boşluklarla sütunları ayrıştırma
sep
normal ifade bağımsız değişkeniyle birlikte kullanın . İlk olarak, sütunlar arasında en az iki boşluk ve sütunun verilerinin içinde en fazla bir ardışık boşluk olduğundan emin olun. Daha sonrasep=r'\s{2,}'
, "ayırıcı için art arda en az iki beyaz boşluk arayarak sütunları ayır" anlamına gelen "(not:engine='python'
çok noktalı veya normal ifade ayırıcılar için gereklidir) anlamını kullanabilirsiniz :df = pd.read_clipboard(..., sep=r'\s{2,}', engine='python')
Ayrıca pd.read_clipboard'u kullanırken içinde boşluk olan sütun adlarını nasıl işlersiniz? .
DataFrame yerine bir dizi okumak
Kullanım
squeeze=true
, büyük olasılıkla da gerekirheader=None
ilk satır da veri ise.s = pd.read_clipboard(..., header=None, squeeze=True)
Ayrıca bkz. Bir Seriyi okumak için panda read_clipboard'u kullanmanın daha kolay bir yolu olabilir mi? .
özel başlık adlarıyla veri yükleme
mevcut başlıkları yok saymak
names=[...]
içinheader=None
ve birlikte kullanınskiprows=[0]
.df = pd.read_clipboard(..., header=None, names=['a', 'b', 'c'], skiprows=[0])
başlık olmadan veri yükleme
- kullanım
header=None
- kullanım
dizin olarak bir veya daha fazla sütun ayarlayın
index_col=[...]
uygun etiket veya indeks ile kullanın
ayrıştırma tarihleri
parse_dates
uygun formatta kullanın . Ayrıştırıyorsanızdatetimes
(yani, tarih damgasıyla ayrılmış sütunlar),sep=r'\s{2,}'
sütunlarınızın en az iki boşlukla ayrıldığından emin olurken de kullanmanız gerekecektir .
Burada ele alınmayan diğer durumlara ilişkin argümanlar hakkında daha kapsamlı bir liste için bu cevaba bakın read_csv
...
Uyarılar
read_clipboard
İsviçre çakısıdır. Ancak
güzel tablo / tablo biçimlerindeki verileri okuyamaz (IOW, sınırlar işi zorlaştırır)
- Bkz oldukça baskılı / biçimlendirilmiş dataframe kullanarak pd.read_clipboard okuma konusunu? bunun üstesinden gelmek için çözümler için.
Dizindeki tüm öğeler belirtilmediği sürece MultIndexes doğru şekilde ayrıştırılamaz.
- MultiIndex veri çerçevelerini pd.read_clipboard ile kopyalama konusuna bakın. bunun üstesinden gelmek için çözümler için.
verilerdeki elipsleri görmezden gelemez / işleyemez
- önerdiğim yöntem, yazdırmadan önce elipsleri manuel olarak kaldırmaktır
listelerin sütunlarını (veya diğer nesneleri) dizeden başka bir şey olarak ayrıştıramaz. Pd.read_clipboard kullanarak listeleri olan bir veri çerçevesinde nasıl okursunuz? Bölümünde gösterildiği gibi sütunların ayrı olarak dönüştürülmesi gerekecektir. .
resimlerden metin okuyamaz (bu nedenle lütfen verilerinizi başkalarıyla paylaşmak için resimleri kullanmayın, lütfen!)
Bu işlevin bir zayıf yönü CTRL + C
, kopyalama işleminin bir PDF
dosyadan gerçekleştirilip gerçekleştirilmediğinin içeriğini yakalayamamasıdır . Bu şekilde test etmek boş bir okumayla sonuçlanır.
Ancak normal bir metin editörü kullanarak, gayet iyi gidiyor. Rastgele yazılmış metin kullanan bir örnek:
>>> pd.read_clipboard()
Empty DataFrame
Columns: [sfsesfsdsxcvfsdf]
Index: []