Yani bir liste listesi oluşturmak istiyorsunuz ... Boş bir listeyle başlamamız gerekiyor
list_of_lists = []
daha sonra, dosya içeriğini satır satır okuyoruz
with open('data') as f:
for line in f:
inner_list = [elt.strip() for elt in line.split(',')]
# in alternative, if you need to use the file content as numbers
# inner_list = [int(elt.strip()) for elt in line.split(',')]
list_of_lists.append(inner_list)
Yaygın bir kullanım durumu sütunsal verilerdir, ancak depolama birimlerimiz tek tek okuduğumuz dosya satırlarıdır, bu nedenle
liste listenizi aktarmak isteyebilirsiniz . Bu, aşağıdaki deyimle yapılabilir
by_cols = zip(*list_of_lists)
Diğer bir yaygın kullanım, her sütuna bir ad vermektir
col_names = ('apples sold', 'pears sold', 'apples revenue', 'pears revenue')
by_names = {}
for i, col_name in enumerate(col_names):
by_names[col_name] = by_cols[i]
homojen veri öğeleri üzerinde çalışabilmeniz için
mean_apple_prices = [money/fruits for money, fruits in
zip(by_names['apples revenue'], by_names['apples_sold'])]
Yazdıklarımın çoğu csv
standart kütüphaneden modül kullanılarak hızlandırılabilir . Başka bir üçüncü taraf modülü, pandas
tipik bir veri analizinin birçok yönünü otomatikleştirmenizi sağlar (ancak bir dizi bağımlılığa sahiptir).
Güncelleme Python 2'de zip(*list_of_lists)
farklı (aktarılmış) bir liste listesi dönerken, Python 3'te durum değişti ve abone edilemeyen bir zip nesnesizip(*list_of_lists)
döndürür .
Eğer varsa gerek endeksli erişimini kullanabilirsiniz
by_cols = list(zip(*list_of_lists))
size Python'un her iki sürümünde de bir liste verir.
Öte yandan, dizinli erişime ihtiyacınız yoksa ve istediğiniz şey sadece sütun adlarıyla dizinlenmiş bir sözlük oluşturmaksa, bir zip nesnesi gayet iyi ...
file = open('some_data.csv')
names = get_names(next(file))
columns = zip(*((x.strip() for x in line.split(',')) for line in file)))
d = {}
for name, column in zip(names, columns): d[name] = column