22 Ekim 2016 Cumartesi

Python'da Excel Dosyasından Veri Okuma

Bu yazımızda python ile bir Excel dosyasından veri okuma işlemi için openpyxl kütüphanesinin nasıl kullanıldığını anlatacağım.  Openpyxl paketi python kurulumu ile gelmediği için ayrıca yüklenmesi gerekiyor.  Kurulum için komut satırında python’nun kurulu olduğu yerde ‘scripts’ klasörüne gidip aşağıdaki komutu yazarak ‘openpyxl’ kütüphanesini ekliyoruz.

























Paket  kurulumu tamamlandıktan sonra projemizi açarak openpyxl kütüphanesini aşağıdaki gibi ekliyoruz. Paketin yüklenmesinde bir problem olmuşsa “NameError: name 'openpyxl' is not defined” gibi bir hata alacaksınız.  Paketi başarıyla kurduğunuzu varsayarak yazımıza devam ediyoruz.

import openpyxl
 



Elimizde script dosyamızla aynı klasör altında ‘ebolaData.xlsx’ isimli bir Excel dosyamız olsun. (openpyxl xls formatındaki dosyaları okuyamıyor böyle bir dosyanız varsa öncelikle xlsx formatına çevirmeniz gerekiyor) Bu dosyanın tamamı bir workbook olarak isimlendirilip veriler bu workbook içerisinde yer alan sheet’ler içerisindeki hücrelerde tutulmaktadır. İlk olarak workbook işlemleri için ‘wb’ değişkenini tanımlayıp dosya yolunu bu değişkene gösteriyoruz.

wb = openpyxl.load_workbook('ebolaData.xlsx')


Daha sonra okumak istediğimiz veriler hangi sayfa içerisinde ise o sayfayı workbook içerisinden okuyup bir değişkene atıyoruz. Bu aşamada çalışılacak sayfayı göstermenin birden fazla yolu var. Aşağıda farklı kullanımlarını gösterdim.


sheet = wb.get_sheet_by_name('Sheet3')

Yukarıdaki kod ile Sheet3’ü okuyoruz(okuyacağınız sayfaya ait isim Excel dosyasının sağ alt kısmında yazmaktadır).

sheet = wb.active


Yukarıdaki kod ile workbook içerisindeki aktif sayfa seçilmektedir.

Çalışacağımız sayfayı belirledikten sonra sıra geldi herhangi bir hücreyi bu sayfadan okumaya. Excel sayfalarında satırlar sayılarla, sütunlar ise harflerle isimlendirilmiştir. Verinin bulunduğu Sütuna ait harfi, satıra ait sayıyla birleştirerek hücreye ait adres belirlenir. Örneğin d sütununun 5 nolu satırındaki hücrenin adresi ‘D5’  olmaktadır. Bu adresteki veri aşağıdaki gibi okunabilir.


cell = sheet['D5'].value
print cell


Yukarıdaki kod için ekran çıktısı :

VP35_EBOZM

Hücre adresi Excel formatında verilebileceği gibi tüm sayfayı bir matris gibi düşünüp satır ve sütun numarasını sayısal olarak belirtip veriye erişmek mümkündür. ‘D5’ hücresi için satır numarası 5, D’ye karşılık gelen sütün numarası 4 olacaktır. Bu durumda ‘D5’ hücresi aşağıdaki şekilde de okunabilir.
 cell = sheet.cell(row = 5,column = 4).value
Şimdi de herhangi bir sütundaki verilerin tümünü bir listeye nasıl aktaracağımızı görelim. Sayfamızdaki F sütununda yer alan verileri hList değişkenine aşağıdaki gibi aktarıp ekrana yazdırabiliriz.


hList = []   
for cell in sheet['F']:
hList.append(str(cell.value))

print hList


Son olarak aynı anda iki sütunu okuyup ayrı listeler halinde döndüren fonksiyonu yazalım. Python iki diziyi aynı anda okumaya izin vermektedir. Dolayısıyla iki listeyi tek döngü içerisinde okuyabiliriz. Okumak istediğimiz sütünları fonksiyonumuza parametre olarak verip, fonksiyonun iki ayrı liste döndürmesini istiyoruz. Fonksiyona ait kodlar aşağıdaki gibi olacaktır.

``` def select_hostPathogen_List(patCol,hostCol):
    pList = [] # pathojen protein  list
    hList =[] # human protin list
   
    for pp, hp in zip(patCol,hostCol):
        pList.append(str(pp.value))
        hList.append(str(hp.value))
    return pList,hList
```



Yukarıdaki fonksiyonu ‘D’ ve ‘F’ sütunlarının okunması için aşağıdaki gibi kullanabiliriz.

P,H = select_hostPathogen_List(sheet['D'], sheet['F'])


P, H listelerini ekrana yazdırma :

for i,j in zip(P,H):
    print i + " : " + j



Bu günkü yazımız bu kadar işinize yarayacağını umar, iyi çalışmalar dilerim.

2 yorum :

  1. Bütün satır ve sütunları nasıl okuyabiliriz peki?

    YanıtlaSil
  2. Bütün satır ve sütunları nasıl okuyabiliriz peki?

    YanıtlaSil