Sayıları Ondalıklara Ayırarak Gösterme

Merhaba Arkadaşlar
Excel tablolarını birleştirdiğimde birleştirilen yeni tabloda sayılar düzensiz bir şekilde gelmekte. Bu sayıları ondalık veya tam sayı olarak nasıl düzenlerim.

Kullandığım kod;

import glob
import pandas as pd

NewData = pd.DataFrame()
for f in glob.glob(r"D:\PYTHON_DATA\Yeni klasör/*xls*"):
    df = pd.read_excel(f,decimal=",")
    NewData = pd.concat([NewData,df],ignore_index = True, axis = 0)
    print(NewData)
    NewData.to_excel("D:\PYTHON_DATA\Data/NewData.xlsx",index=False) #Dosyayı kaydet

biraz detay verebilir misiniz?

Sayılar tam olarak nasıl görünüyor? binlik ayırıcı virgül, ondalık ayırıcı nokta mı oluyor?
Örnek bir dosya ya da dosyanın bir kısmını veyahut Ekran görüntüsü paylaşma şansınız var mı?

İyi akşamalar Mustafa Bey

|İlçe|Kullanım|Sayısı|
|İlçe Kullanım Sayısı
AKKIŞLA DERSLİK 15
BÜNYAN DERSLİK 75
DEVELİ BİLGİSAYAR 250
AKKIŞLA BİLGİSAYAR 15
BÜNYAN DERSLİK 25
DEVELİ DERSLİK 142,5
AKKIŞLA KÜTÜPHANE 163
BÜNYAN DERSLİK 183,5
DEVELİ KÜTÜPHANE 12
AKKIŞLA LABARATUAR 5
BÜNYAN DERSLİK 204
DEVELİ KÜTÜPHANE 224,5
AKKIŞLA BİLGİSAYAR 245
BÜNYAN LABARATUAR 17
DEVELİ DERSLİK 265,5
AKKIŞLA DERSLİK 286
BÜNYAN KÜTÜPHANE 306,5
AKKIŞLA DERSLİK 438
AKKIŞLA DERSLİK 1266
AKKIŞLA BİLGİSAYAR 2094
AKKIŞLA BİLGİSAYAR 2922
AKKIŞLA DERSLİK 3750
AKKIŞLA DERSLİK 4578
AKKIŞLA KÜTÜPHANE 5406
AKKIŞLA DERSLİK 6234
AKKIŞLA KÜTÜPHANE 7062
AKKIŞLA LABARATUAR 7890
AKKIŞLA DERSLİK 8718
AKKIŞLA KÜTÜPHANE 9546
AKKIŞLA BİLGİSAYAR 10374
AKKIŞLA LABARATUAR 11202
AKKIŞLA DERSLİK 12030
AKKIŞLA DERSLİK 12858
AKKIŞLA KÜTÜPHANE 13686
erdal DERSLİK 1784
erdal KÜTÜPHANE 253
erdal DERSLİK 112
erdal KÜTÜPHANE 125
erdal DERSLİK 126
erdal KÜTÜPHANE 2862
erdal DERSLİK 253
erdal KÜTÜPHANE 112
erdal DERSLİK 55
erdal KÜTÜPHANE 129
erdal DERSLİK 75
erdal KÜTÜPHANE 1789
erdal DERSLİK 2598
erdal KÜTÜPHANE 2512
erdal DERSLİK 25
erdal KÜTÜPHANE 789
erdal DERSLİK 1215
—|—|—|

Sayısı isimli sütundaki tüm sayıları tamsayı olarak göstermek için aşağıdaki kodu kullanabilirsiniz.
round() metodu ile ondalık sayısını ayarlayabilirsin.
(Örneğin: df["Sayısı"] = round(df["Sayısı"], 2))

import glob
import pandas as pd

NewData = pd.DataFrame()
for f in glob.glob(r"D:\PYTHON_DATA\Yeni klasör/*xls*"):
    df = pd.read_excel(f, decimal=",")
    df["Sayısı"] = round(df["Sayısı"])    # df["Sayısı"] = round(df["Sayısı"], 0) yazılsa da olur, varsayılan değer zaten sıfır (0)'dır.
    NewData = pd.concat([NewData,df], ignore_index = True, axis = 0)
    NewData.to_excel("D:\PYTHON_DATA\Data/NewData.xlsx",index=False) #Dosyayı kaydet
1 Beğeni

Hocam, teşekkür ederim elinize emeğinize sağlık.

Hocam ondalık gösterimini df[“Sayısı”] = round(df[“Sayısı”], 2)) bu şekilde kullandım ama olmadı.
Tamsayı olarak tamamdır.

Rica ederim.
df[“Sayısı”] = round(df[“Sayısı”], 2)) kodu ile tamsayılar ondalıklı sayıya dönmese bile, excel dosyasını açtıktan sonra Sayısı isimli sütunu seçip "CTRL+SHIFT+1" tuşlarına basarak tüm sütunu 2 basamaklı ondalık sayı formatında görüntüleyebilirsiniz.

Pandas DataFrame.astype() ve pandas.to_numeric() metotlarını kullanarak bir sütunu string/int tipinden float tipine dönüştürebilirsiniz.

Kaynaklar:

1 Beğeni

Hocam, tüm linkleri inceledim. Fakat verileri ondalık durumuna çeviremedim.
Hocam, verileri pandas ile ondalığa çeviremiyoruz mu yoksa yeni başlayan biri olarak ben mi uygulayamadım.

Merhaba,
Aslında pd.to_numeric ve .astype(float) metotlarıyla sayıları ondalıklı sayıya (float) çeviriyoruz ancak, dışa aktardığımzda ya da Excel, LibreOfis Calc ,…vb programlarla açınca, sayının sonunda, ,0 olduğunu görünce tam sayı şeklinde gösteriyor diye düşünüyorum.

Elimde 4 adet dosya var. İçlerinde rastgele sayılardan oluşan değerler var ;

    Başlık-1   Başlık-2   Başlık-3   Başlık-4   Başlık-5
0  73548.934  62754.369  95572.374  89587.500  14870.357
1   4498.278  17292.587  45378.310  62122.186  56909.609
2  78533.553  57130.103  74664.727  87637.235  83359.873
3  55741.405  73454.243  80990.162  48441.147  63247.397
4  83692.645  15618.842  16285.147  20114.661  58443.352
5  38467.440  68268.550  22381.987  67503.484  69909.356
6  70284.788  78852.484  36110.482  27845.170  48473.751
7  35815.798  12808.974  29667.911   8714.515  49881.208
8  24252.891  65101.454  81202.257  11536.335  67402.505
    Başlık-1   Başlık-2   Başlık-3   Başlık-4  Başlık-5
0  85123.229  23947.387  98085.567    464.785      2701
1  32907.180  46801.529  95236.144  95907.389     24033
2  87870.352   2122.680  45229.397  42045.220     70720
3  81829.979  57785.922  41338.279   3905.138     95336
4  45030.198   5217.356  58643.222  72499.423     20861
5  11645.657  97656.360  93908.150  55692.464     56381
6  81037.607  64785.837   3466.479  82912.393     50734
7  29214.281  77011.793  57913.117  75581.799     18812
8  11576.510  42650.450  35080.581  56730.101      8794
    Başlık-1   Başlık-2  Başlık-3   Başlık-4   Başlık-5
0  55212.260  58908.237       100  59589.850  98656.267
1  42688.501  63209.457       500  24368.807  65797.176
2  15458.175  41513.571      1000  45537.581  80841.667
3  22207.672  74269.687      1500  12362.107  18714.376
4  80875.502  21830.963      5000  97423.985  36999.757
5  20610.686  79653.509      6500  35354.927  46165.902
6  16285.144  97185.990      8000  52412.549  46775.809
7  87618.329  51602.569      9000  94517.793  81700.236
8  91041.281  62464.755     10000   7401.582  80296.251
    Başlık-1   Başlık-2   Başlık-3   Başlık-4   Başlık-5
0  65488.824  91445.770  43258.765  51251.561  29437.505
1  87030.551  14521.625  12100.320  77439.360  95526.100
2  41783.106   7706.381  12627.510  26698.265   6817.341
3   7428.717  12509.889  91447.248  39656.960  82419.645
4  35196.190  95275.337  11469.480  41115.533  28177.778
5  39223.205  64079.232  60616.720  77246.453   2610.745
6  49998.396  62089.975  38964.243  98807.609  33831.537
7  96728.899  71256.739  59835.557  94401.765  13403.308
8  36228.100  96867.762  70019.516  90721.673   3664.554

Aşağıdaki çıktıda görebileceğin üzere, Başlık-3 ve Başlık-5 te tamsayı olan değerler mevcut.

Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float64
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5      int64
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3      int64
Başlık-4    float64
Başlık-5    float64
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float64
dtype: object

bu satırları aşağıdaki kod ile;

    df["Başlık-5"] = pd.to_numeric(df["Başlık-5"], downcast='float')

ya da bu kod ile;

    df['Başlık-5'] = df['Başlık-5'].astype(float)

tüm değerlerin ondalıklı sayıya (float) dönüştüğünü göreceksiniz;

Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float64
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float32
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float64
dtype: object
Başlık-1    float64
Başlık-2    float64
Başlık-3    float64
Başlık-4    float64
Başlık-5    float64
dtype: object

Veri Çerçevemizin son haline, konsoldan bakacak olursak;

    Başlık-1   Başlık-2   Başlık-3   Başlık-4   Başlık-5
0  73548.934  62754.369  95572.374  89587.500  14870.357
1   4498.278  17292.587  45378.310  62122.186  56909.609
2  78533.553  57130.103  74664.727  87637.235  83359.873
3  55741.405  73454.243  80990.162  48441.147  63247.397
4  83692.645  15618.842  16285.147  20114.661  58443.352
5  38467.440  68268.550  22381.987  67503.484  69909.356
6  70284.788  78852.484  36110.482  27845.170  48473.751
7  35815.798  12808.974  29667.911   8714.515  49881.208
8  24252.891  65101.454  81202.257  11536.335  67402.505
    Başlık-1   Başlık-2   Başlık-3   Başlık-4  Başlık-5
0  85123.229  23947.387  98085.567    464.785    2701.0
1  32907.180  46801.529  95236.144  95907.389   24033.0
2  87870.352   2122.680  45229.397  42045.220   70720.0
3  81829.979  57785.922  41338.279   3905.138   95336.0
4  45030.198   5217.356  58643.222  72499.423   20861.0
5  11645.657  97656.360  93908.150  55692.464   56381.0
6  81037.607  64785.837   3466.479  82912.393   50734.0
7  29214.281  77011.793  57913.117  75581.799   18812.0
8  11576.510  42650.450  35080.581  56730.101    8794.0
    Başlık-1   Başlık-2  Başlık-3   Başlık-4   Başlık-5
0  55212.260  58908.237     100.0  59589.850  98656.267
1  42688.501  63209.457     500.0  24368.807  65797.176
2  15458.175  41513.571    1000.0  45537.581  80841.667
3  22207.672  74269.687    1500.0  12362.107  18714.376
4  80875.502  21830.963    5000.0  97423.985  36999.757
5  20610.686  79653.509    6500.0  35354.927  46165.902
6  16285.144  97185.990    8000.0  52412.549  46775.809
7  87618.329  51602.569    9000.0  94517.793  81700.236
8  91041.281  62464.755   10000.0   7401.582  80296.251
    Başlık-1   Başlık-2   Başlık-3   Başlık-4   Başlık-5
0  65488.824  91445.770  43258.765  51251.561  29437.505
1  87030.551  14521.625  12100.320  77439.360  95526.100
2  41783.106   7706.381  12627.510  26698.265   6817.341
3   7428.717  12509.889  91447.248  39656.960  82419.645
4  35196.190  95275.337  11469.480  41115.533  28177.778
5  39223.205  64079.232  60616.720  77246.453   2610.745
6  49998.396  62089.975  38964.243  98807.609  33831.537
7  96728.899  71256.739  59835.557  94401.765  13403.308
8  36228.100  96867.762  70019.516  90721.673   3664.554

Söylediğim gibi, dosyayı Excel ile açtıktan sonra Sayısı isimli sütunu seçip "CTRL+SHIFT+1" tuşlarına basarak tüm sütunu 2 basamaklı ondalık sayı formatında görüntüleyebilirsiniz.

Deneyimli kullanıcılar / programcılar farklı bilgi verebilir. Benim bilgim bu kadar :slight_smile:

Kaynaklar:

1 Beğeni

Hocam, çok teşekkür ederim. Elinize emeğinize sağlık.
Bende çok uğraştım ama olmadı. Dışarı aktarınca dediğiniz gibi bozuluyor.
Tamsayı olarak düzenleye biliyoruz.
Tekrar teşekkür ederim.