Ahoj.
Predem bych rád zdúraznil že jsem jsem zacatecnik a pythona jsem si zvolil jelikož potrebuju analyzovat ted i v budoucnu vetsi mnozství dat.
Mám "csv" soubory s rozpetím statisíců až miliony řádku .
Otazka je jak správne data nacist data z csv souboru a nadale z nich vytahnout nejcasteji se opakovane hodnoty a jejich pocet.
Nacitam soubor pres pandase jako dataframe. Ale potom se potykam s castymi errory.
Ten posledni je ze k provedeni prikazu potrebuji 1-dimenzionalni pole.
Jak nacitate csv soubor vy, aby s nimi byla dale nadna manipulace?
Dekuji
Fórum › Python
Import CSV dat - analyza nejcastejsich hodnot
#3 Petr
<?php
$options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
);
$dsn = "mysql:host=localhost;dbname=test;charset=utf8";
$pdo = new PDO($dsn, null, null, $options);
$pdo->exec("DROP TABLE IF EXISTS csv_import");
$pdo->exec("CREATE TABLE csv_import(
id serial,
nazev varchar(30),
cena decimal(12,2)
)");
$insert = $pdo->prepare("INSERT INTO csv_import(nazev, cena)
VALUES (?, ?)
");
$csv = fopen("data.csv", "r");
while(!feof($csv)) {
$line = fgetcsv($csv, 4096, ',', '"');
$insert->execute($line);
}
Vyzkoušeno, funkční. Ošetření chybových stavů si snad doděláš sám dle vlastních potřeb.
Na načítání CSV dat je v Pythonu k dispozici kupodivu csv modul. Tady je hezký příklad převodu csv souboru do html tabulky, z toho si odvodíš jak se to dělá:
http://python.wraith.cz/ukazky-csv2html.php
#!/bin/env python
from csv import reader
from os.path import isfile
from sys import argv, exit
def quit():
print "\nStiskni ENTER pro konec..."
raw_input()
exit()
def main():
if len(argv) < 2:
print "Zadej CSV soubor jako parametr."
quit()
csvPath = argv[1]
if not isfile(csvPath):
print "Soubor '%s' neexistuje." % csvPath
quit()
csvFile = open(csvPath, 'rb')
parser = reader(csvFile, dialect='excel', delimiter=';')
html = ['<table>']
for i, row in enumerate(parser):
eo = 'odd' if i % 2 else 'even'
html.append(' <tr class="%s row%d">' % (eo, i))
for j, cell in enumerate(row):
cell = cell.replace('&', '&')
cell = cell.replace('<', '<')
html.append(' <td class="col%d cell%d-%d">%s</td>' % (j, i, j, cell))
html.append(' </tr>')
html.append('</table>')
htmlTxt = '\n'.join(html)
htmlFile = open(csvPath + '.html', 'wt')
htmlFile.write(htmlTxt)
htmlFile.close()
print "\n\nHOTOVO"
quit()
try:
print "Konverze csv souboru do html tabulky."
print "Copyright (c) 2007, Petr Mach, gsl@seznam.cz"
print "Licence: GPL v 2.0, http://www.gnu.org/…gpl-2.0.html"
print
main()
except Exception, e:
print "\n\nZACHYCENA CHYBA V PROGRAMU:\n"
print e
quit()
Nevim teda, jak je to v pythonu s moduly, ale v php dost casto peru s kodovanim server latin-1, win excel win-1250, jiny csv ala excel UTF-8 a jeste dalsi csv ala excel UTF-8 + BOM. V tom kodu programu se kodovani vubec neresi. Ani treba detailni nastaveni escape znaku. V PHP to take neni nic moc.
Zmineny py priklad neobsahuje import do db. Obavam se, ze tazatel je ten typ, dejte mi zadarmo hotove reseni, na kterem jste pracovali pul roku.
Oficialni dokumentace je chaoticka.
https://docs.python.org/…ary/csv.html
Schvalne porovnej s PHP. (nevim, zda csv ma uz modul, ale v te dokumentaci jasne vidis jake parametry ta funkce muze mit. U pythonu asi precetl slovo od slova a vybral z toho, co je treba)
http://php.net/….fgetcsv.php
#8 peter
Poporade.
1) je to priklad jak nacist csv v pythonu, kazda zbytecna slozitost navic jen zneprehledni samo pouzivani csv
2) kodovani neni treba resit, vysledna html tabulka bude v kodovani v kterem bude predlozeno csv, takze viz pravidlo 1
3) tazatel se vylozene ptal, jak nacist data z csv souboru, po ukladani do DB se neptal, takze viz pravidlo 1.
4) escape znaky se resi, osefuje si to reader z csv modulu, kteremu bylo receno ze dialect=excel
5) oficialni dokumentace je kompletni a chaoticka neni, nikdy jsem nic vic nepotreboval, do zacatku uplne staci kapitola 4.1.5 Examples, ktera sama o sobe prumerne inteligentnimu programatorovi postaci.
6) porovnani s php nema smysl, protoze tvuj odkaz pro php popisuje jednu primitivni funkci na nacteni dat, kdezto dokumentace pythonu popisuje cely csv modul pro komplexni praci s csv, tedy nejen cteni, ale zapis, prace nejen s polem ale i slovnikem, praci s dialekty a mnohe dalsi vychytavky, to cele v objektovam provedeni s moznosti odvozovani vlastnich trid dedenim a tak dale.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Export/import dat do *.csv, odkazování na mapy — založil MichalK
Analýza databáze v CSV — založil Zemi44
Import csv - intel — založil Jan Cerny
Import z CSV formát datumu — založil kralik
Import do CSV a UTF8 v excelu — založil Martin
Moderátoři diskuze