Çözüldü Veri setlerinde sayısal formatı korumak için ne yapılmalı?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
8 Eylül 2018
Mesajlar
9.654
Makaleler
8
Çözümler
225
Yer
İstanbul
.csv dosyasında normalde basamakları belli etmek için nokta var. Fakat Excel veya Python'a atınca aralara birkaç nokta daha giriyor ve verinin sayısal değeri kayboluyor. Bunu önlemek için ne yapabilirim?



Veri setinin ilk basamağı böyle:
Kod:
Sonuç
              Systolic_BP  Diabetes  CVD_Risk  Age  Gender  \
0                    90.0         0         1   22    Male
1                    90.0         0         0   48    Male
2  11.653.386.717.581.600         0         0   20  Female
3   9.187.132.615.519.680         1         0   61    Male
4  10.305.835.290.389.100         1         0   66  Female
5  12.073.433.202.150.600         0         0   46    Male
6  10.613.295.485.997.300         0         0   57    Male
7  10.522.836.168.602.300         0         1   60    Male
8  13.798.825.713.054.200         0         0   29  Female
9  12.464.042.898.400.800         0         0   44  Female

12.464.042.898.400.800 değeri aslında 12.464042898400800 şeklinde olacakken Excel veya Python'a atınca sayıları binler basamaklarına ayırıyor. Gruplar arası karşılaştırma yapacağım fakat verilerin sayısal değerleri kayboluyor.

Veri Google e-Tablolar'da istenildiği gibi gözüküyor. Ekran görüntüsü atarsam ne istediğim az buz belli olur:

1740262402680.png


Sayıların noktadan sonraki basamaklarını istiyorum sadece, bunu .csv veya .xlsx dosyasına dönüştürünce istediğim gibi olmuyor.


Google e-Tablolar üzerinden çekip Excel'e yapıştırınca da sonuç aynı.
 
Çözüm
Python ile "Descriptive Statistics"i çıkaran kodu yazdınız mı? Tür dönüşümlerinizde bir hata varsa bu sayıları binler basamağınca bölüyor olabilir. Dosyayı paylaşıyorum. Uzantısını ".csv" olarak değiştirebilirsiniz. Öbür türlü yüklememi onaylamadı.

Descriptive Statistics bozmuyor hocam. Veri setini direkt Pandas ile okuyunca binler basamaklarına ayırıyor.

Python:
import pandas as pd


df = pd.read_csv(r"C:\Users\Emre\Downloads\21020513 - 21020513 (1).csv")
print(df.head())

Bu şekilde, çıktısı da bu:

Kod:
90.0  1  0  ...  18.928.829.361.976.800 1.1 0.1
0  11.732.736.126.794.900  0  0  ...  20.223.646.031.898.500   7   1
1  13.043.714.794.180.000  1  1  ...  23.123.659.182.883.400   2   0
2  11.845.966.814.982.600  0  2  ...   2.583.097.606.546.700   3   0
3  10.531.766.908.975.900  1  2  ...  16.967.985.699.720.200   5   0
4  13.031.058.614.251.800  0  0  ...   3.270.398.447.982.720   7   0


[5 rows x 25 columns]
Out[1]:
                1           0          48         1.1         0.1
count  450.000000  450.000000  450.000000  450.000000  450.000000
mean     0.328889    0.720000   49.191111    4.717778    0.217778
std      0.470332    0.767839   17.682901    2.901178    0.413195
min      0.000000    0.000000   20.000000    0.000000    0.000000
25%      0.000000    0.000000   34.000000    2.000000    0.000000
50%      0.000000    1.000000   50.000000    5.000000    0.000000
75%      1.000000    1.000000   65.000000    7.000000    0.000000
max      1.000000    2.000000   79.000000    9.000000    1.000000

Sizin verdiğiniz dosya ile deniyorum şimdi.


ParserError: Error tokenizing data. C error: Expected 19 fields in line 4, saw 20 hatası veriyor hocam. Sanırım sebebi noktaların virgüle dönüşmesi bu sefer. Virgülleri nasıl noktaya çevirebilirim?

Verileri Excel'e geri atıp, gelişmiş seçeneklerden ondalık ayracını virgül yerine nokta olarak değiştirince sorunumu çözdüm.
Tam anlayamadım.
12.464.042.898.400.800 değeri aslında 12.464042898400800 şeklinde olacakken
Sistolik kan basıncı nasıl 12 olacak? 124.64.... diye gitmesi gerekiyor sanırım. Google e-Tablolar'a verdiğiniz CSV dosyasını attım yine hatalı sonuç aldım.

Bu CSV üzerinde bir işlem yapıldı mı daha öncesinde? Yapıldıysa orijinal halini atar mısınız?
 
Sistolik kan basıncı nasıl 12 olacak? 124.64.... diye gitmesi gerekiyor sanırım. Google e-Tablolar'a verdiğiniz CSV dosyasını attım yine hatalı sonuç aldım.

Bu CSV üzerinde bir işlem yapıldı mı daha öncesinde? Yapıldıysa orijinal halini atar mısınız?

Sistolik kan basıncı 90 ile 130 arasında değişiyordu, sanırım o kısım bozulmuş, fark ettiğiniz için teşekkür ederim.

CSV dosyası üzerinde işlem yapıldı. Sadece rastgele 50 satırlık veri silindi. Orijinal hali bu şekilde:

 
Eki Görüntüle 2430777
Şu şekilde bir görüntü mü elde etmek istemiştiniz Excel'de?

Aynen böyle bir görüntü lazım. Bunu Python'a atıp betimleyici istatistikleri elde edip gruplar arası karşılaştırmalar yapacaktım. Bu dosyanın .csv formatını bana atma şansınız var mıdır acaba?
 
Python ile "Descriptive Statistics"i çıkaran kodu yazdınız mı? Tür dönüşümlerinizde bir hata varsa bu sayıları binler basamağınca bölüyor olabilir. Dosyayı paylaşıyorum. Uzantısını ".csv" olarak değiştirebilirsiniz. Öbür türlü yüklememi onaylamadı.
 

Dosya Ekleri

  • Technopat.txt
    116,4 KB · Görüntüleme: 8
Python ile "Descriptive Statistics"i çıkaran kodu yazdınız mı? Tür dönüşümlerinizde bir hata varsa bu sayıları binler basamağınca bölüyor olabilir. Dosyayı paylaşıyorum. Uzantısını ".csv" olarak değiştirebilirsiniz. Öbür türlü yüklememi onaylamadı.

Descriptive Statistics bozmuyor hocam. Veri setini direkt Pandas ile okuyunca binler basamaklarına ayırıyor.

Python:
import pandas as pd


df = pd.read_csv(r"C:\Users\Emre\Downloads\21020513 - 21020513 (1).csv")
print(df.head())

Bu şekilde, çıktısı da bu:

Kod:
90.0  1  0  ...  18.928.829.361.976.800 1.1 0.1
0  11.732.736.126.794.900  0  0  ...  20.223.646.031.898.500   7   1
1  13.043.714.794.180.000  1  1  ...  23.123.659.182.883.400   2   0
2  11.845.966.814.982.600  0  2  ...   2.583.097.606.546.700   3   0
3  10.531.766.908.975.900  1  2  ...  16.967.985.699.720.200   5   0
4  13.031.058.614.251.800  0  0  ...   3.270.398.447.982.720   7   0


[5 rows x 25 columns]
Out[1]:
                1           0          48         1.1         0.1
count  450.000000  450.000000  450.000000  450.000000  450.000000
mean     0.328889    0.720000   49.191111    4.717778    0.217778
std      0.470332    0.767839   17.682901    2.901178    0.413195
min      0.000000    0.000000   20.000000    0.000000    0.000000
25%      0.000000    0.000000   34.000000    2.000000    0.000000
50%      0.000000    1.000000   50.000000    5.000000    0.000000
75%      1.000000    1.000000   65.000000    7.000000    0.000000
max      1.000000    2.000000   79.000000    9.000000    1.000000

Sizin verdiğiniz dosya ile deniyorum şimdi.


ParserError: Error tokenizing data. C error: Expected 19 fields in line 4, saw 20 hatası veriyor hocam. Sanırım sebebi noktaların virgüle dönüşmesi bu sefer. Virgülleri nasıl noktaya çevirebilirim?

Verileri Excel'e geri atıp, gelişmiş seçeneklerden ondalık ayracını virgül yerine nokta olarak değiştirince sorunumu çözdüm.
 
Son düzenleme:
Çözüm

Technopat Haberler

Yeni konular

Geri
Yukarı