[Çözüldü] Veri Madenciliği

Başlatan shigej38, 31 Temmuz 2019 - 16:16:40

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

shigej38

Merhaba arkadaşlar
Elimde genetik hastalıkları ve bu hastalıkların genlerini içeren bir csv dosyam (A dosyası diyelim) var bu dosya ile başka bir csv dosyasının (B dosyası diyelim) belli sütünlarını karşılaştırıp eşleşme bulunan hücrenin yan satırlarında ki bazı bilgileri B dosyasında eşleşmenin yanına yeni bir sütünda yazmak istiyorum bunu nasıl yapabilirim?

import csv

def csv_oku(d_obj):
    reader = csv.DictReader(d_obj, delimiter='\t')
    for line in reader:
        print(line["SYMBOL"])

if __name__ == "__main__":
    csv_path = "/home/ertan/Desktop/ertan.csv"
    with open(csv_path, "r") as d_oku:
        csv_oku(d_oku)

kodu ile tarama yapıcağım sütünün bilgilerini yazdırabiliyorum ancak A dosyası ile B dosyasını nasıl karşılaştıracağımı çözemedim.

Aaron

Merhaba. Bir tane ornek sonuc gosterebilir misiniz?

Mesela bir A.csv, B.csv ve beklenen nilecek sonuc olarak orneklendirebilir misiniz?

shigej38

Sevgili [mention=648282]@Aaron[/mention]:

A.csv dosyası

Orphanet Number,Disease,Gene Symbol,OMIM Gene Number,Gene
5,Long chain 3-hydroxyacyl-CoA dehydrogenase deficiency,HADHA,600890,hydroxyacyl-CoA dehydrogenase trifunctional multienzyme complex subunit alpha
6,3-methylcrotonyl-CoA carboxylase deficiency,MCCC1,609010,methylcrotonoyl-CoA carboxylase 1
6,3-methylcrotonyl-CoA carboxylase deficiency,MCCC2,609014,methylcrotonoyl-CoA carboxylase 2
7,3C syndrome,WASHC5,610657,WASH complex subunit 5


B.csv dosyası

Orphanet Number,Disease,Inheritance
5,Long chain 3-hydroxyacyl-CoA dehydrogenase deficiency,Autosomal recessive
6,3-methylcrotonyl-CoA carboxylase deficiency,Autosomal recessive
7,3C syndrome,Autosomal recessive
7,3C syndrome,X-linked recessive


sonuç olarak yapmak istediğim format şu şekilde:

orphanet number,Disease,Gene Symbol,İnheritance
blablabla,blablabla,blablabla,blablabla
blablabla,blablabla,blablabla,blablabla


belgelerin birleştirilme mantığı şu şekilde olucak A.csv dosyasında ki Disease veya Orphanet Number bilgilerine göre B.csv dosyasında arama yapıp eşlesen hücrenin bulunduğu satırda "İnheritance" sütününü alıp A.csv'e yada ayrı bir C.csv dosyasına "Orphanet number", "Disease", "Gene Symbol", "İnheritance" bilgilerini yazılması şeklinde olucak.

Aaron

Anladigim kadari ile elindeki CSV dosyalari birbirinin aynisi degil. Eger ayni olsaydi sequential okuyarak halledebilirdin ama birebir ayni satirlara ve sutunlara sahip olmadiklari icin her A dosyasindaki her satir icin B dosyasindaki her satiri okuman gerekecekti. Yani A(n) * B(n) gibi bir complexity olacakti. Bu sebeple Pandas kullanmani tavsiye ederim. Iki dosyayi da farkli dataframe olacak sekilde read_csv ile yukle. Sartlari da onceden belirleyerek A'ya yeni bir sutun eklemek icin B'yi kullan. Bunun icin bir fonksiyon yazabilirsin. Senin durumun icin bir ornek yazamiyorum ama soyle bir sey var:

https://chrisalbon.com/python/data_wrangling/pandas_make_new_columns_using_functions/

shigej38

Merhaba arkadaşlar
Uzun araştırma mesaileri sonuçu sorunu pandas kütüphanesi kullanarak çözdüm.

pandas kütüphanesinin DataFrame ve merge fonksiyonları kullanarak bileştirdim. birleştirme için kullanmasını istediğim sütünları left_on='blabla'  right_on='blabla' şeklinde seçerek yine pandasın fonksiyonları arasında olan ExcelWriter, to_excel fonksiyonları ile 3. bir excel tablosuna yazılmasını sağladım.