W jaki sposób Python odczytuje plik CSV do pandy DataFrame (której mogę następnie użyć do operacji statystycznych, może mieć kolumny z innym typem itp.)?
Mój plik CSV "value.txt"
ma następującą zawartość:
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
W R czytalibyśmy ten plik używając:
price <- read.csv("value.txt")
a to zwróci 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
Czy istnieje sposób w Pythonie na uzyskanie tej samej funkcjonalności?
Odpowiedzi:
pandy na ratunek:
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
Zwraca pandas DataFrame, który jest podobny do
R's
.źródło
Aby odczytać plik CSV jako pandas DataFrame, musisz użyć
pd.read_csv
.Ale to nie jest koniec historii; dane istnieją w wielu różnych formatach i są przechowywane na różne sposoby, więc często trzeba będzie przekazać dodatkowe parametry,
read_csv
aby zapewnić poprawny odczyt danych.Oto tabela zawierająca typowe scenariusze napotkane w przypadku plików CSV wraz z odpowiednim argumentem, którego będziesz musiał użyć. Zazwyczaj trzeba wszystkich lub niektórych kombinacji argumentów poniżej, aby przeczytać w swojej danych.
Są inne argumenty, o których tutaj nie wspomniałem, ale to są te, z którymi będziesz się najczęściej spotykać.
źródło
index_col
: powiedz pandom, które kolumny mają być używane jako indeksy dla twojej ramki danych”Oto alternatywa dla biblioteki pandas przy użyciu wbudowanego modułu csv w języku 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
wydrukuje
{'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']}
źródło
import pandas as pd df = pd.read_csv('/PathToFile.txt', sep = ',')
Spowoduje to zaimportowanie pliku .txt lub .csv do DataFrame.
źródło
Spróbuj tego
import pandas as pd data=pd.read_csv('C:/Users/Downloads/winequality-red.csv')
Zastąp lokalizację docelową pliku, gdzie znajduje się Twój zestaw danych, odnieś się do tego adresu URL https://medium.com/@kanchanardj/jargon-in-python-used-in-data-science-to-laymans-language-part- one-12ddfd31592f
źródło
%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
źródło
Możesz użyć modułu csv znajdującego się w standardowej bibliotece Pythona do manipulowania plikami CSV.
przykład:
import csv with open('some.csv', 'rb') as f: reader = csv.reader(f) for row in reader: print row
źródło
csv
modułu, ponieważ jest za niski.pandas
zapewnia żądany poziom abstrakcji.importuj pandy jako pd
dataset = pd.read_csv ('/ home / nspython / Downloads / movie_metadata1.csv')
źródło
Uwaga równie czysta, ale:
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
Nie tak kompaktowy, ale spełnia swoje zadanie:
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
źródło