Apa cara Python untuk membaca dalam file CSV menjadi pandas DataFrame (yang kemudian dapat saya gunakan untuk operasi statistik, dapat memiliki kolom dengan tipe berbeda, dll.)?
File CSV saya "value.txt"
memiliki konten berikut:
Date,"price","factor_1","factor_2"
2012-06-11,1600.20,1.255,1.548
2012-06-12,1610.02,1.258,1.554
2012-06-13,1618.07,1.249,1.552
2012-06-14,1624.40,1.253,1.556
2012-06-15,1626.15,1.258,1.552
2012-06-16,1626.15,1.263,1.558
2012-06-17,1626.15,1.264,1.572
Di R kita akan membaca file ini dengan menggunakan:
price <- read.csv("value.txt")
dan itu akan mengembalikan R data.frame:
> price <- read.csv("value.txt")
> price
Date price factor_1 factor_2
1 2012-06-11 1600.20 1.255 1.548
2 2012-06-12 1610.02 1.258 1.554
3 2012-06-13 1618.07 1.249 1.552
4 2012-06-14 1624.40 1.253 1.556
5 2012-06-15 1626.15 1.258 1.552
6 2012-06-16 1626.15 1.263 1.558
7 2012-06-17 1626.15 1.264 1.572
Apakah ada cara Pythonic untuk mendapatkan fungsi yang sama?
Jawaban:
panda untuk menyelamatkan:
import pandas as pd print pd.read_csv('value.txt') Date price factor_1 factor_2 0 2012-06-11 1600.20 1.255 1.548 1 2012-06-12 1610.02 1.258 1.554 2 2012-06-13 1618.07 1.249 1.552 3 2012-06-14 1624.40 1.253 1.556 4 2012-06-15 1626.15 1.258 1.552 5 2012-06-16 1626.15 1.263 1.558 6 2012-06-17 1626.15 1.264 1.572
Ini mengembalikan DataFrame pandas yang mirip dengan
R's
.sumber
Untuk membaca file CSV sebagai DataFrame pandas, Anda harus menggunakan
pd.read_csv
.Tapi ini bukanlah akhir cerita; data ada dalam berbagai format dan disimpan dengan cara yang berbeda sehingga Anda akan sering perlu meneruskan parameter tambahan
read_csv
untuk memastikan data Anda terbaca dengan benar.Berikut adalah tabel yang mencantumkan skenario umum yang dihadapi dengan file CSV bersama dengan argumen yang sesuai yang perlu Anda gunakan. Anda biasanya memerlukan semua atau beberapa kombinasi dari argumen di bawah ini untuk membaca data Anda .
Ada argumen lain yang tidak saya sebutkan di sini, tetapi ini adalah yang paling sering Anda temui.
sumber
index_col
: panda kirim yang kolom (s) untuk digunakan sebagai indeks untuk dataframe Anda'Berikut alternatif pustaka pandas menggunakan modul csv bawaan Python .
import csv from pprint import pprint with open('foo.csv', 'rb') as f: reader = csv.reader(f) headers = reader.next() column = {h:[] for h in headers} for row in reader: for h, v in zip(headers, row): column[h].append(v) pprint(column) # Pretty printer
akan mencetak
{'Date': ['2012-06-11', '2012-06-12', '2012-06-13', '2012-06-14', '2012-06-15', '2012-06-16', '2012-06-17'], 'factor_1': ['1.255', '1.258', '1.249', '1.253', '1.258', '1.263', '1.264'], 'factor_2': ['1.548', '1.554', '1.552', '1.556', '1.552', '1.558', '1.572'], 'price': ['1600.20', '1610.02', '1618.07', '1624.40', '1626.15', '1626.15', '1626.15']}
sumber
import pandas as pd df = pd.read_csv('/PathToFile.txt', sep = ',')
Ini akan mengimpor file .txt atau .csv Anda ke DataFrame.
sumber
Coba ini
import pandas as pd data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
Ganti lokasi target file, dengan tempat kumpulan data Anda ditemukan, lihat url ini https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- one-12ddfd31592f
sumber
%cd C:\Users\asus\Desktop\python import pandas as pd df = pd.read_csv('value.txt') df.head() Date price factor_1 factor_2 0 2012-06-11 1600.20 1.255 1.548 1 2012-06-12 1610.02 1.258 1.554 2 2012-06-13 1618.07 1.249 1.552 3 2012-06-14 1624.40 1.253 1.556 4 2012-06-15 1626.15 1.258 1.552
sumber
Anda dapat menggunakan modul csv yang ada di pustaka standar python untuk memanipulasi file CSV.
contoh:
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
sumber
csv
modul karena levelnya terlalu rendah.pandas
memberikan tingkat abstraksi yang diminta.import panda sebagai pd
dataset = pd.read_csv ('/ home / nspython / Downloads / movie_metadata1.csv')
sumber
Perhatikan cukup bersih, tetapi:
import csv with open("value.txt", "r") as f: csv_reader = reader(f) num = ' ' for row in csv_reader: print num, '\t'.join(row) if num == ' ': num=0 num=num+1
Tidak sekompak, tetapi berfungsi:
Date price factor_1 factor_2 1 2012-06-11 1600.20 1.255 1.548 2 2012-06-12 1610.02 1.258 1.554 3 2012-06-13 1618.07 1.249 1.552 4 2012-06-14 1624.40 1.253 1.556 5 2012-06-15 1626.15 1.258 1.552 6 2012-06-16 1626.15 1.263 1.558 7 2012-06-17 1626.15 1.264 1.572
sumber