Merhaba elimdeki listeyi dataframe haline getirmek istiyorum. Kolonlar Yıllık Faiz Oranı, Net Getiri ve Toplam kazanç olacak şekilde yanlarında yazan sayıların kolonlarda değer olarak yazmasını istiyorum bunu nasıl yapabilirim ?
Merhaba elinizdeki listenin dosya formatı nedir resimden ayıramıyorum bu nedenle biraz kör atışı yapacağım.
str.split() metodu size yardımcı olacaktır.
İlk işlem Başlık açıklamaları bölmek için split metodunda : kullanırsanız,
Yani satırı string olarak dosyanızdan yada listenizden alın.
str_sample gibi bir değişkene,
Sonra split uygulayın:
str_sample.split(’:’)
Bu durumda size iki değer döndürecektir, birincisi iki nokta üst üsteye kadar ilk
sonrasindeki de ikinci sırada bölünmüş olacaktır.
Python String | split() - GeeksforGeeks
Burada örnek kullanımlar görebilirsiniz.
Bu bölünmesiyle ilgili kısım.
Kullandığınız listenin formatını açıklar veya listeyi verirseniz,
Ve oluşacak çıktı formatını belirtirseniz örnek kod da yazabiliriz.
Kolay gelisn.
Listeyi veri çekerek kendim oluşturdum herhangi bir dosyayı import etmedim,text üzerinden oluşturdum.Evet str ile ayırabiliyorum ama sonrasında 3 değeri de satır olarak nasıl ekleyeceğimi bilemedim. Liste şu şekilde:
['Yıllık Faiz Oranı: % 18,25 ', 'Net Getiri: 101 76,58 ₺ ', 'Toplam Kazanç: 5.077 ₺ ', 'Yıllık Faiz Oranı: % 20,50 ', 'Net Getiri: 142 86,08 ₺ ', 'Toplam Kazanç: 5.086 ₺ ', 'Yıllık Faiz Oranı: % 20,00 ', 'Net Getiri: 121 83,95 ₺ ', 'Toplam Kazanç: 5.084 ₺ ', 'Yıllık Faiz Oranı: % 17,50 ', 'Net Getiri: 172 73,38 ₺ ', 'Toplam Kazanç: 5.073 ₺ ', 'Yıllık Faiz Oranı: % 19,00 ', 'Net Getiri: 136 79,75 ₺ ', 'Toplam Kazanç: 5.080 ₺ ', 'Yıllık Faiz Oranı: % 16,50 ', 'Net Getiri: 166 69,17 ₺ ', 'Toplam Kazanç: 5.069 ₺ ', 'Yıllık Faiz Oranı: % 16,35 ', 'Net Getiri: 115 68,55 ₺ ', 'Toplam Kazanç: 5.069 ₺ ', 'Yıllık Faiz Oranı: % 16,00 ', 'Net Getiri: 96 66,63 ₺ ', 'Toplam Kazanç: 5.067 ₺ ', 'Yıllık Faiz Oranı: % 15,00 ', 'Net Getiri: 73 62,84 ₺ ', 'Toplam Kazanç: 5.063 ₺ ', 'Yıllık Faiz Oranı: % 14,00 ', 'Net Getiri: 112 58,63 ₺ ', 'Toplam Kazanç: 5.059 ₺ ', 'Yıllık Faiz Oranı: % 13,75 ', 'Net Getiri: 148 57,59 ₺ ', 'Toplam Kazanç: 5.058 ₺ ', 'Yıllık Faiz Oranı: % 12,00 ', 'Net Getiri: 83 50,22 ₺ ', 'Toplam Kazanç: 5.050 ₺ ']
Aslında kodu pat diye yapıştırırlar ama ben biraz çok soru sorarak çözerim kusuruma bakmayınız.
Listeyi bu formatta aldınız.
Ama üç değeri satır olarak nasıl ekleyeceğim sözünüzü anlamadım.
Hangi üç değer?
Nereye ekleyeceksiniz?
Örnek bir kod bırakayım sanırım bu durumda üzerinde konuşmak daha kolay olacak.
#data split
list_1 = ['Yıllık Faiz Oranı: % 18,25 ',
'Net Getiri: 101 76,58 ₺ ',
'Toplam Kazanç: 5.077 ₺ ',
'Yıllık Faiz Oranı: % 20,50 ',
'Net Getiri: 142 86,08 ₺ ',
'Toplam Kazanç: 5.086 ₺ ',
'Yıllık Faiz Oranı: % 20,00 ',
'Net Getiri: 121 83,95 ₺ ',
'Toplam Kazanç: 5.084 ₺ ',
'Yıllık Faiz Oranı: % 17,50 ',
'Net Getiri: 172 73,38 ₺ ',
'Toplam Kazanç: 5.073 ₺ ',
'Yıllık Faiz Oranı: % 19,00 ',
'Net Getiri: 136 79,75 ₺ ',
'Toplam Kazanç: 5.080 ₺ ',
'Yıllık Faiz Oranı: % 16,50 ',
'Net Getiri: 166 69,17 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,35 ',
'Net Getiri: 115 68,55 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,00 ',
'Net Getiri: 96 66,63 ₺ ',
'Toplam Kazanç: 5.067 ₺ ',
'Yıllık Faiz Oranı: % 15,00 ',
'Net Getiri: 73 62,84 ₺ ',
'Toplam Kazanç: 5.063 ₺ ',
'Yıllık Faiz Oranı: % 14,00 ',
'Net Getiri: 112 58,63 ₺ ',
'Toplam Kazanç: 5.059 ₺ ',
'Yıllık Faiz Oranı: % 13,75 ',
'Net Getiri: 148 57,59 ₺ ',
'Toplam Kazanç: 5.058 ₺ ',
'Yıllık Faiz Oranı: % 12,00 ',
'Net Getiri: 83 50,22 ₺ ',
'Toplam Kazanç: 5.050 ₺ ']
print("Listenin birinci elemanı ikiye bölündü:", list_1[0].split(':'))
for i in range(len(list_1)):
print("Listenin tüm elemanları bölündü", list_1[i].split(':'))
Listeden alt liste oluşturuldu. Bir elemanına ulaşmak isterseniz indeksleri
Yada listenin tamamını bir seferde almak.
Aklıma şu geliyor.
Pandas için mi istiyorsunuz, ona uyarlayalım.
Sorunu rahatlıkla çözeriz.
Yeterki, kısıt ve koşullarınızı netleştirelim.
Şöyle mi düşündünüz acaba?
#data split
import numpy as np
list_1 = ['Yıllık Faiz Oranı: % 18,25 ',
'Net Getiri: 101 76,58 ₺ ',
'Toplam Kazanç: 5.077 ₺ ',
'Yıllık Faiz Oranı: % 20,50 ',
'Net Getiri: 142 86,08 ₺ ',
'Toplam Kazanç: 5.086 ₺ ',
'Yıllık Faiz Oranı: % 20,00 ',
'Net Getiri: 121 83,95 ₺ ',
'Toplam Kazanç: 5.084 ₺ ',
'Yıllık Faiz Oranı: % 17,50 ',
'Net Getiri: 172 73,38 ₺ ',
'Toplam Kazanç: 5.073 ₺ ',
'Yıllık Faiz Oranı: % 19,00 ',
'Net Getiri: 136 79,75 ₺ ',
'Toplam Kazanç: 5.080 ₺ ',
'Yıllık Faiz Oranı: % 16,50 ',
'Net Getiri: 166 69,17 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,35 ',
'Net Getiri: 115 68,55 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,00 ',
'Net Getiri: 96 66,63 ₺ ',
'Toplam Kazanç: 5.067 ₺ ',
'Yıllık Faiz Oranı: % 15,00 ',
'Net Getiri: 73 62,84 ₺ ',
'Toplam Kazanç: 5.063 ₺ ',
'Yıllık Faiz Oranı: % 14,00 ',
'Net Getiri: 112 58,63 ₺ ',
'Toplam Kazanç: 5.059 ₺ ',
'Yıllık Faiz Oranı: % 13,75 ',
'Net Getiri: 148 57,59 ₺ ',
'Toplam Kazanç: 5.058 ₺ ',
'Yıllık Faiz Oranı: % 12,00 ',
'Net Getiri: 83 50,22 ₺ ',
'Toplam Kazanç: 5.050 ₺ ']
main_list =[ 'Yıllık Faiz Oranı','Net Getiri','Toplam Kazanç']
for i in range(0,len(list_1),3):
_ , coloumn1_value = list_1[i].split(":")
_ , coloumn2_value = list_1[i+1].split(":")
_ , coloumn3_value = list_1[i+2].split(":")
main_list.append([coloumn1_value, coloumn2_value, coloumn3_value])
for j in range (len(main_list)):
print(main_list[j])
Belki bu şekilde de satırlar kafanızı karıştırabilir, 3 sütunlu bir bir liste olarak kullanmak istersiniz diye, üç sütunlu bir diziye çevirdim.
#data split
list_1 = ['Yıllık Faiz Oranı: % 18,25 ',
'Net Getiri: 101 76,58 ₺ ',
'Toplam Kazanç: 5.077 ₺ ',
'Yıllık Faiz Oranı: % 20,50 ',
'Net Getiri: 142 86,08 ₺ ',
'Toplam Kazanç: 5.086 ₺ ',
'Yıllık Faiz Oranı: % 20,00 ',
'Net Getiri: 121 83,95 ₺ ',
'Toplam Kazanç: 5.084 ₺ ',
'Yıllık Faiz Oranı: % 17,50 ',
'Net Getiri: 172 73,38 ₺ ',
'Toplam Kazanç: 5.073 ₺ ',
'Yıllık Faiz Oranı: % 19,00 ',
'Net Getiri: 136 79,75 ₺ ',
'Toplam Kazanç: 5.080 ₺ ',
'Yıllık Faiz Oranı: % 16,50 ',
'Net Getiri: 166 69,17 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,35 ',
'Net Getiri: 115 68,55 ₺ ',
'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,00 ',
'Net Getiri: 96 66,63 ₺ ',
'Toplam Kazanç: 5.067 ₺ ',
'Yıllık Faiz Oranı: % 15,00 ',
'Net Getiri: 73 62,84 ₺ ',
'Toplam Kazanç: 5.063 ₺ ',
'Yıllık Faiz Oranı: % 14,00 ',
'Net Getiri: 112 58,63 ₺ ',
'Toplam Kazanç: 5.059 ₺ ',
'Yıllık Faiz Oranı: % 13,75 ',
'Net Getiri: 148 57,59 ₺ ',
'Toplam Kazanç: 5.058 ₺ ',
'Yıllık Faiz Oranı: % 12,00 ',
'Net Getiri: 83 50,22 ₺ ',
'Toplam Kazanç: 5.050 ₺ ']
main_list = [['Yıllık Faiz Oranı', 'Net Getiri', 'Toplam Kazanç']]
for i in range(0,len(list_1),3):
_ , coloumn1_value = list_1[i].split(":")
_ , coloumn2_value = list_1[i+1].split(":")
_ , coloumn3_value = list_1[i+2].split(":")
main_list.append([coloumn1_value,coloumn2_value,coloumn3_value ])
for j in range (len(main_list)):
print(main_list[j][0],main_list[j][1],main_list[j][2])
Bu şekilde, main_list iki boyutlu bir dizi halinde.
İstediğiniz elemanına main_list[deger][sutun] formatında ulaşabilirsiniz.
Diğer taraftan pandas dememişsiniz ama eğer pandas için data frame düşünüyorsanız:
Çıktısı veren son kodu ekliyorum:
import pandas as pd
list_1 = [ 'Yıllık Faiz Oranı: % 18,25 ', 'Net Getiri: 101 76,58 ₺ ', 'Toplam Kazanç: 5.077 ₺ ',
'Yıllık Faiz Oranı: % 20,50 ', 'Net Getiri: 142 86,08 ₺ ', 'Toplam Kazanç: 5.086 ₺ ',
'Yıllık Faiz Oranı: % 20,00 ', 'Net Getiri: 121 83,95 ₺ ', 'Toplam Kazanç: 5.084 ₺ ',
'Yıllık Faiz Oranı: % 17,50 ', 'Net Getiri: 172 73,38 ₺ ', 'Toplam Kazanç: 5.073 ₺ ',
'Yıllık Faiz Oranı: % 19,00 ', 'Net Getiri: 136 79,75 ₺ ', 'Toplam Kazanç: 5.080 ₺ ',
'Yıllık Faiz Oranı: % 16,50 ', 'Net Getiri: 166 69,17 ₺ ', 'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,35 ', 'Net Getiri: 115 68,55 ₺ ', 'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,00 ', 'Net Getiri: 96 66,63 ₺ ', 'Toplam Kazanç: 5.067 ₺ ',
'Yıllık Faiz Oranı: % 15,00 ', 'Net Getiri: 73 62,84 ₺ ', 'Toplam Kazanç: 5.063 ₺ ',
'Yıllık Faiz Oranı: % 14,00 ', 'Net Getiri: 112 58,63 ₺ ', 'Toplam Kazanç: 5.059 ₺ ',
'Yıllık Faiz Oranı: % 13,75 ', 'Net Getiri: 148 57,59 ₺ ', 'Toplam Kazanç: 5.058 ₺ ',
'Yıllık Faiz Oranı: % 12,00 ', 'Net Getiri: 83 50,22 ₺ ', 'Toplam Kazanç: 5.050 ₺ ']
main_list = [['Yıllık Faiz Oranı', 'Net Getiri', 'Toplam Kazanç']]
for i in range(0,len(list_1),3):
_ , coloumn1_value = list_1[i].split(":")
_ , coloumn2_value = list_1[i+1].split(":")
_ , coloumn3_value = list_1[i+2].split(":")
main_list.append([coloumn1_value,coloumn2_value,coloumn3_value ])
pd = pd.DataFrame(main_list)
print(pd)
Listenin ilk satırları başlık olmasın, panda kolon adı olarak görünsün isterseniz:
import pandas as pd
list_1 = [ 'Yıllık Faiz Oranı: % 18,25 ', 'Net Getiri: 101 76,58 ₺ ', 'Toplam Kazanç: 5.077 ₺ ',
'Yıllık Faiz Oranı: % 20,50 ', 'Net Getiri: 142 86,08 ₺ ', 'Toplam Kazanç: 5.086 ₺ ',
'Yıllık Faiz Oranı: % 20,00 ', 'Net Getiri: 121 83,95 ₺ ', 'Toplam Kazanç: 5.084 ₺ ',
'Yıllık Faiz Oranı: % 17,50 ', 'Net Getiri: 172 73,38 ₺ ', 'Toplam Kazanç: 5.073 ₺ ',
'Yıllık Faiz Oranı: % 19,00 ', 'Net Getiri: 136 79,75 ₺ ', 'Toplam Kazanç: 5.080 ₺ ',
'Yıllık Faiz Oranı: % 16,50 ', 'Net Getiri: 166 69,17 ₺ ', 'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,35 ', 'Net Getiri: 115 68,55 ₺ ', 'Toplam Kazanç: 5.069 ₺ ',
'Yıllık Faiz Oranı: % 16,00 ', 'Net Getiri: 96 66,63 ₺ ', 'Toplam Kazanç: 5.067 ₺ ',
'Yıllık Faiz Oranı: % 15,00 ', 'Net Getiri: 73 62,84 ₺ ', 'Toplam Kazanç: 5.063 ₺ ',
'Yıllık Faiz Oranı: % 14,00 ', 'Net Getiri: 112 58,63 ₺ ', 'Toplam Kazanç: 5.059 ₺ ',
'Yıllık Faiz Oranı: % 13,75 ', 'Net Getiri: 148 57,59 ₺ ', 'Toplam Kazanç: 5.058 ₺ ',
'Yıllık Faiz Oranı: % 12,00 ', 'Net Getiri: 83 50,22 ₺ ', 'Toplam Kazanç: 5.050 ₺ ']
main_list = [['Yıllık Faiz Oranı', 'Net Getiri', 'Toplam Kazanç']]
for i in range(0,len(list_1),3):
_ , coloumn1_value = list_1[i].split(":")
_ , coloumn2_value = list_1[i+1].split(":")
_ , coloumn3_value = list_1[i+2].split(":")
if (i == 0):
main_list[0]=([coloumn1_value,coloumn2_value,coloumn3_value ])
else :
main_list.append([coloumn1_value,coloumn2_value,coloumn3_value ])
pd = pd.DataFrame(main_list, columns =['Yıllık Faiz Oranı', 'Net Getiri', 'Toplam Kazanç'])
print(pd)
Bu da bir başka aşaması.
Çok teşekkürler, sorun çözüldü bu şekilde.
buradaki _ neyi ifade ediyor. @semtex
list_1[i] split ile iki değişken/sonuç/obje/liste vs döndürüyor.
Biz birinci verinin, “Net Getiri” ," Toplam Kazanç", Yıllık Faiz Oranı" verilerinden bir olacağını biliyoruz. Çünkü iki nokta üst üste (":") verisinden /stringinden ikiye böldük.
Birinci veri grubu olan başlıkla ilgilenmiyoruz : 'nin sonrasındaki rakam ve yüzdelik rakamlarla ilgileniyoruz.
Bu durumda birinci veri, _ ile bir nevi boşa gönderiliyor.
Biz sadece virgülün solundaki coloumn1_value değeri ile ilgileniyoruz.
Tek bunu yazmış olsa idik, iki değer döndürüyor, bir değer yüklüyorsun hatası alırdık.
_ (alt çizgi) yerine bir değişken de kullanabilirdik.
Anlatma kabileyetim zayıftır, umarı açıklayabilmişimdir.
Alt tire/Alt çizgi/ Underscore için farklı kullanımlar:
Underscore in Python Tutorial : What is the purpose and meaning of _ & __ - DataCamp
Buradan daha faydalı bilgiler edinebilirsiniz.
Tamam baktım farklı farklı kullanım alanları varmış. Teşekkürler.