Veri setini tırnak işareti ve virgüle göre ayırma python

Elimde bu şekilde bu şekilde devam eden bir veri seti var. Bu veri setini virgüle ve tırnak işaretlerine göre ayırarak pythonda nasıl dataframe haline getirebilirim ? Seperatör olarak ikisini de kullanarak yapmayı denedim fakat olmadı.

“B010000”,“K012870”,“804”,“32988-1”,“20180220”,“20181001”,

Merhaba,

Bu str tipinde bir veri ise, str sınıfının split metodu ile karakterleri virgüllerden ayırabilirsiniz. split metodu bir list döndürür ve bu list, virgül ile ayrılan karakterleri içerir. Bu karakterlerin ilk ve son indislerini almazsanız veriyi temizlemiş olursunuz. Ancak bu bir dataframe olamaz. Çünkü tek boyutlu bir dizi çerçeve olamaz. Verinin, dataframe olabilmesi için iki boyutlu olması lazım.

Normalde veri setimde 2 milyon satır ve 23 sütun var.Verilerin nasıl bir formda olduğunu göstermek adına bu şekilde yazmıştım ama benim hatam eksik bilgi vermişim.

Veri setinden aldığım kesit aşağıdaki gibidir. İki farklı delimiter olduğu için nasıl ayıracağımı bilemedim.

Ayırma işleminden sonra nasıl bir yapı elde etmek istiyorsunuz?

Veri büyük duruyor, parça parça işlemeniz daha iyi olabilir.

Anladığım kadarıyla tırnak işaretlerini silip virgül kısımlarından verileri listelemek istiyorsunuz.

ilk olarak satır satır verileri liste içine alın. Hangi dosyadan çalıştığınızı bilmemekle birlikte:
data = data.txt
data = data.splitlines()
Böylece her bir satırı sıralı şekilde listeler olarak liste içine alırız.
Ardından for döngüsü ile her satır listesinde tırnak işaretlerini kaldırırız.
Ardından split metodu ile verileri ayırırız.

for satır in data:
satır[0] = satır[0].replace('"', '')
satır = satır.split(",")

gerisi pandas ile :

import pandas as pd
df = pd.DataFrame(data)

Şöyle bir fonksiyon yazmıştım. Bu fonksiyondan dönen sonuçları pandas.DataFrame ile birlikte kullandığım zaman aşağıdaki gibi bir çıktı elde ediyorum. Bu arada pandas varken neden veri ayıklamayla uğraştığımızı ben de bilmiyorum. Fonksiyonda veri tipi dönüşümü olmadığına dikkat edin. O yüzden pandas kullanmak daha sağlıklı.

Örnek olması için paylaştım. Kendinize göre düzenleyip istediğiniz sonucu elde edebilirsiniz.

Verilerim

hava,isi,nem,ruzgar,oyun
gunesli,sicak,yuksek,hafif,hayir
gunesli,sicak,yuksek,kuvvetli,hayir
bulutlu,sicak,yuksek,hafif,evet
yagmurlu,ilik,yuksek,hafif,evet
yagmurlu,soguk,normal,hafif,evet
yagmurlu,soguk,normal,kuvvetli,hayir
bulutlu,soguk,normal,kuvvetli,evet
gunesli,ilik,yuksek,hafif,hayir
gunesli,soguk,normal,hafif,evet
yagmurlu,ilik,normal,hafif,evet
gunesli,ilik,normal,kuvvetli,evet
bulutlu,ilik,yuksek,kuvvetli,evet
bulutlu,sicak,normal,hafif,evet
yagmurlu,ilik,yuksek,kuvvetli,hayir

Fonksiyon

import pandas

# CSV dosyasından verileri yükleme
def load_csv(filename):
    result = {}

    with open(filename) as dosya:
        titles = [i.replace("\n","") if "\n" in i else i for i in dosya.readline().split(",")]
        values = dosya.readlines()

        for i in values:
            temp = i.split(",")

            for index,k in enumerate(temp):
                v = result.get(titles[index],[])
                v.append(k.replace("\n","") if "\n" in k else k)
                result[titles[index]] = v
    
    return result

veriler = load_csv("oyun.csv")
df = pandas.DataFrame(veriler)

Sonuç

        hava    isi     nem    ruzgar   oyun
0    gunesli  sicak  yuksek     hafif  hayir
1    gunesli  sicak  yuksek  kuvvetli  hayir
2    bulutlu  sicak  yuksek     hafif   evet
3   yagmurlu   ilik  yuksek     hafif   evet
4   yagmurlu  soguk  normal     hafif   evet
5   yagmurlu  soguk  normal  kuvvetli  hayir
6    bulutlu  soguk  normal  kuvvetli   evet
7    gunesli   ilik  yuksek     hafif  hayir
8    gunesli  soguk  normal     hafif   evet
9   yagmurlu   ilik  normal     hafif   evet
10   gunesli   ilik  normal  kuvvetli   evet
11   bulutlu   ilik  yuksek  kuvvetli   evet
12   bulutlu  sicak  normal     hafif   evet
13  yagmurlu   ilik  yuksek  kuvvetli  hayir

Python’da dataframe diye bir sey yok, bir python kutuphanesinden bahsediyor olabilir misin?

Veri seti de CSV gibi duruyor.

1 Beğeni