2017-06-22 68 views
9

documentation pandas.read_csv diyor:bu yayının başlığında argüman için

float_precision: C motorunu dönüştürücü dize, varsayılan Hiçbiri

belirtir kullanmalıdır kayan noktalı değerler için. Seçenekler, sıradan dönüştürücü için Yok, yüksek hassasiyetli dönüştürücü için yüksek ve gidiş dönüş dönüştürücü için round_trip.

I, tercihen kaynak kodu kazmak kalmadan bahsedilen üç algoritma, ilgili daha fazla bilgi için istiyorum

.


S: bu algoritmalar Google aynen yaptıklarını öğrenmek olabilir için isimler var ve onlar nasıl farklı mı?


(Ayrıca, bir tarafı soru:? Tam olarak "C motor" bu bağlamda ne Bu bir Pandalar özgü bir şey, ya da bir Python çapında şey Yukarıdakilerin hiçbiri?)


söz konusu kod tabanı aşina olmak değil, sadece bulun ilgili kaynak kodu için bana uzun zaman alacaktı bekliyoruz. Ama ben bile bulmak yönetmek varsayarak, algoritmanın bu tür benim deneyim bazı üst düzey açıklama olmadan o, en azından benim için, gerçekten zor olduğunu, onların uygulamaları yüzden son derece optimize olmasıdır ve böyle düşük bir seviyede neler olup bittiğini takip et.

+1

Sadece basit bir örnek kullanarak ve en iyi ben olursa olsun, sadece çift hassasiyet olarak okunuyor şeyi söyleyebilir bu uğraşırken ne float_precision seçeneğinde belirtilir. 64 bit esasen en yüksek şamandıra hassas olan (daha fazla araştırma yapmadan, tüm görevlerden 99.99% için gayet çift (64bits) varsaymak güderdik ve aksi takdirde bir dize olarak okumak ve gerektiğinde müteakip işleme yaparım numpy/PANDAS'ın en azından bir normal anlamda) tarafından desteklenmektedir. Ama, iyi soru! – JohnE

+3

Adam gibi bir cevap için şu anda vaktim ama https://github.com/pandas-dev/pandas/issues/8002 ve https://github.com/pandas-dev/pandas/pull üzerinden okuma yok/8044 size arka planı vermelidir. –

cevap

1

Sen gerçek algoritmalar hakkında sorulan - bulabilirim yakın: https://github.com/pandas-dev/pandas/blob/master/pandas/_libs/parsers.pyx#L492

Bu ilgili cevap alınır, Buradan MaxU (Understanding pandas.read_csv() float parsing)

Ordinary: double_converter_nogil = xstrtod 
High: double_converter_nogil = precise_xstrtod 
Round-Trip: double_converter_withgil = round_trip 

şeref, sen C-topraklarında. Ayrıca pandalar C harflerini neden sorular - kritik kod yolları Cython veya C yazılır