Re: [Python] Pandas ed Encoding

2016-02-09 Per discussione Manlio Perillo
2016-02-08 22:37 GMT+01:00 Christian Barra :
> Il giorno 8 febbraio 2016 21:04, Andrea D'Amore  ha
> scritto:
>>
>> 2016-02-08 19:19 GMT+01:00 Christian Barra :
>> >> curl -I 'urlDaDoveScaricoUnFileCSV'
>>
>> > "Il vino bianco D.O.C. 5 terre � ricavato
>>
>> Ok ma l'uscita di curl qual è?
>
>
> curl -I 'urlDaDoveScaricoUnFileCSV'
> poi sono semplicemente andato a riprendere la stringa di testo che ho
> utilizzato come esempio finora.
>

Dovresti anche dirci gli headers che restituisce il server HTTP, in
particolare il Content-Type.

> [...]
>
> Allora...ho fatto un po di test.
>
> df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1")
> s = df_witouht_urlib.loc[1,"DESCRIZIONE"]
> print(type(s))
>
> 
>
>
> s.__repr__()
>
>
> '"Il vino bianco D.O.C. 5 terre è
>

Il problema potrebbe essere che panda, quando scarica il file tramite
HTTP, ignori l'encoding che gli passi ed invece usa quello specificato
dal server HTTP, oppure cerca di indovinarlo.

Comunque un consiglio: **non** assumere che l'encoding sia latin-1, ma
usa cp1252 invece.
Vedi questa discussione per un pò di contesto:
https://groups.google.com/forum/#!searchin/golang-nuts/iso-8859-1/golang-nuts/VudK_05B62k/RtnrQtAPFgAJ

> [...]
>
> print(type(data))
>
>
> 
>

Ah, usi Python 3.
Stavo assumendo Python 2.


Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-09 Per discussione Christian Barra
Il giorno 9 febbraio 2016 12:35, Manlio Perillo 
ha scritto:
>
>
> Dovresti anche dirci gli headers che restituisce il server HTTP, in
> particolare il Content-Type.
>

Taac !

HTTP/1.1 200 OK
Date: Tue, 09 Feb 2016 11:51:12 GMT
Server: Apache
X-Powered-By: PHP/5.5.31
Content-Disposition: attachment; filename=data.csv
Cache-Control: max-age=0
Expires: Tue, 09 Feb 2016 11:51:12 GMT
Content-Type: text/csv;

Il problema potrebbe essere che panda, quando scarica il file tramite
> HTTP, ignori l'encoding che gli passi ed invece usa quello specificato
> dal server HTTP, oppure cerca di indovinarlo.
>
> Comunque un consiglio: **non** assumere che l'encoding sia latin-1, ma
> usa cp1252 invece.
>

Do una occhiata al codice di pandas, ma presumo che il problema sia
quello...
Ora prova ad utilizzare cp1252 e vedo se da problemi.


-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-09 Per discussione enrico franchi
2016-02-09 11:19 GMT+00:00 Pietro Battiston :

> Sarei curioso di sapere cosa ti abbia dato questa impressione al volo.
> Es. disorganizzazione del flow? Pochi commenti? Troppe funzioni a spasso?
> Tutto ciò ed altro?
>

Mah... un insieme di cose. Intanto non sono mai stato contento dell'API.
Tenta di essere smart in molti modi e risulta essere semplicemente
complicata da usare.

Ovviamente questa tendenza se la portano in giro un po' ovunque... per cui
per dire hai signatures veramente inbordellate. Tipo a sboccio i readers
hanno una cinquantina di parametri. E per risolvere il problema della code
duplication fanno una higher order function (di 50 parametri) che ti
ritorna una funzione (di 50 parametri) che fa un minimo di parameter
mangling, poi ci costruisce un dizionario gigantesco che passa come
argomento alla funzione effettiva "generica" che fa il lavoro. La quale
funzione e' lunga tipo 260 righe.

Ora... hai due approcci per testare tutto questo. O testi solo le funzioni
"pubbliche" (e.g., read_cvs), oppure testi la funzione effettiva _read. Che
ha 50 parametri. Ora, nell'ipotesi semplificativa che ciascuno di questi
parametri abbia due valori rilevanti, stiamo parlando di 2^50 combinazioni
di input. Che e' nell'ordine di grandezza di mille volte l'eta'
dell'universo. Ora, non e' detto che tutte le combinazioni percorrano path
diversi (ovviamente impossibile, visto che la funzione e' solo 260
righe)... ma allora perche' non raggruppare i parametri in pochi set noti?
Se invece testi solo la roba pubblica, rischi di lasciare combinazioni non
testate che magari mordono. Mi sembra che qualcuno si sia scordato di
provare a modellare sta roba ad oggetti... ecco.Non che sia un gran fan
della programmazione ad oggetti... ma anche in Haskell se uno vede gruppi
di parametri che vanno insieme si fa una qualche struttura che li
rappresenta.


-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-09 Per discussione m

* Christian Barra (barrac...@gmail.com) [160208 22:38]:


data.__repr__()

"Il vino bianco D.O.C. 5 terre \\xe8 ricavato


data.decode("latin-1")

"Il vino bianco D.O.C. 5 terre è ricavato



alla fine della saga ce lo dici che uve ci vanno nella d.o.c. 5 terre,
vero ? non ci lasci così, sul più bello ...

--
 .*.finelli
 /V\
(/ \) --
(   )   Linux: Friends dont let friends use Piccolosoffice
^^-^^ --

(...) e poi dopo di lei ha parlato Walter Veltroni che ha parlato per 29
minuti e 42 secondi e quello che ha detto, non l’ho mica ascoltato, ma
non per cattiveria, per via del fatto che uno che è stato responsabile
della propaganda del Partito Comunista Italiano e che dopo, quando il
comunismo è fallito e il Partito Comunista Italiano ha cambiato nome ha
detto di non esser mai stato comunista, cosa volete ascoltarlo, uno
così, cosa volete che possa dire, di sensato?

   Paolo Nori
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Gollum1
Il 08 febbraio 2016 22:37:59 CET, Christian Barra  ha 
scritto:
>Il giorno 8 febbraio 2016 21:04, Andrea D'Amore 
>ha
>scritto:
>
>> 2016-02-08 19:19 GMT+01:00 Christian Barra :
>> >> curl -I 'urlDaDoveScaricoUnFileCSV'
>>
>> > "Il vino bianco D.O.C. 5 terre � ricavato
>>
>> Ok ma l'uscita di curl qual è?
>
>
>curl -I 'urlDaDoveScaricoUnFileCSV'
>poi sono semplicemente andato a riprendere la stringa di testo che ho
>utilizzato come esempio finora.
>
>Problemi con la configurazione in locale ? Potrebbe anche esserema
>ho
>configurato il bash_profile proprio in mattinata
>
># Export LANG
>export LANG="en_US.UTF-8"
>export LC_MONETARY="it_IT.UTF-8"
>export LC_NUMERIC="it_IT.UTF-8"
>export LC_TIME="it_IT.UTF-8"
>
>Allora...ho fatto un po di test.
>
>df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1")
>s = df_witouht_urlib.loc[1,"DESCRIZIONE"]
>print(type(s))
>
>
>
>
>s.__repr__()
>
>
>'"Il vino bianco D.O.C. 5 terre è
>
>
>-
>
>
>response = urllib.request.urlretrieve(URL, "data.csv")
>df_with_urlib = pd.read_csv("data.csv", encoding = "latin-1")
>s = df_with_urlib.loc[1,"DESCRIZIONE"]
>print(type(s))
>
>
>
>
>
>s.__repr__()
>
>'"Il vino bianco D.O.C. 5 terre è ricavato
>
>
>-
>
>
>response = urllib.request.urlopen(URL)
>data = response.read()
>
>print(type(data))
>
>
>
>
>
>data.__repr__()
>
>"Il vino bianco D.O.C. 5 terre \\xe8 ricavato
>
>
>data.decode("latin-1")
>
>"Il vino bianco D.O.C. 5 terre è ricavato
>
Bravissimo a non aver fatto il top quoting, ora un passo in più, tutta la parte 
seguente alla tua risposta, che non serve più, cancellala, e in ogni caso, 
cancella firma e disclaimer del post a cui rispondi.
Byez
-- 
Gollum1

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli 
errori di battitura (maledetto correttore ortografico).
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
Sto impazzendo dietro a questa cosa, non vorrei fosse un problema interno a
jupyter...

URL = "urlDaDoveScaricoUnFileCSV"
testfile = urllib.request.URLopener()
testfile.retrieve(URL, "data.csv")

df_1 = pd.read_csv(URL, encoding="latin-1")
df = pd.read_csv("data.csv", encoding="latin-1")

df_1.loc[1,"DESCRIZIONE"]
output: "Il vino bianco D.O.C. 5 terre è ricavato
df.loc[1,"DESCRIZIONE"]
output: "Il vino bianco D.O.C. 5 terre è ricavato.

Cosa potrebbe essere ?
-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Andrea D'Amore
2016-02-08 18:22 GMT+01:00 Christian Barra :
> Cosa potrebbe essere ?

curl -I 'urlDaDoveScaricoUnFileCSV'


-- 
Andrea
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Roberto Polli
I dati sono diversi o uguali? Aprili con "b".

# curl > file-curl.csv
# diff data.csv file-curl.csv

Pace,
R.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
2016-02-08 19:51 GMT+01:00 Roberto Polli :

> I dati sono diversi o uguali? Aprili con "b".
>

I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da python
b'stringona' ?

>
> # curl -l > test.csv
> # diff data.csv test.csv
>
diff data.csv test.csv

output vuoto.


>
> Pace,
> R.
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Roberto Polli
Scusate il TP

Il 8 febbraio 2016 21:17, Manlio Perillo  ha scritto:
>>> >>> print(repr(s))
__repr__ don't print ;)

Pace,
R.
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
Il giorno 8 febbraio 2016 21:04, Andrea D'Amore  ha
scritto:

> 2016-02-08 19:19 GMT+01:00 Christian Barra :
> >> curl -I 'urlDaDoveScaricoUnFileCSV'
>
> > "Il vino bianco D.O.C. 5 terre � ricavato
>
> Ok ma l'uscita di curl qual è?


curl -I 'urlDaDoveScaricoUnFileCSV'
poi sono semplicemente andato a riprendere la stringa di testo che ho
utilizzato come esempio finora.

Problemi con la configurazione in locale ? Potrebbe anche esserema ho
configurato il bash_profile proprio in mattinata

# Export LANG
export LANG="en_US.UTF-8"
export LC_MONETARY="it_IT.UTF-8"
export LC_NUMERIC="it_IT.UTF-8"
export LC_TIME="it_IT.UTF-8"

Allora...ho fatto un po di test.

df_witouht_urlib = pd.read_csv(URL,encoding = "latin-1")
s = df_witouht_urlib.loc[1,"DESCRIZIONE"]
print(type(s))




s.__repr__()


'"Il vino bianco D.O.C. 5 terre è


-


response = urllib.request.urlretrieve(URL, "data.csv")
df_with_urlib = pd.read_csv("data.csv", encoding = "latin-1")
s = df_with_urlib.loc[1,"DESCRIZIONE"]
print(type(s))





s.__repr__()

'"Il vino bianco D.O.C. 5 terre è ricavato


-


response = urllib.request.urlopen(URL)
data = response.read()

print(type(data))





data.__repr__()

"Il vino bianco D.O.C. 5 terre \\xe8 ricavato


data.decode("latin-1")

"Il vino bianco D.O.C. 5 terre è ricavato




Il giorno 8 febbraio 2016 21:52, Gollum1  ha
scritto:

> Il 08 febbraio 2016 21:46:37 CET, Roberto Polli  ha
> scritto:
> >Scusate il TP
> >
> >Il 8 febbraio 2016 21:17, Manlio Perillo  ha
> >scritto:
>  >>> print(repr(s))
> >__repr__ don't print ;)
> >
> >Pace,
> >R.
> >___
> >Python mailing list
> >Python@lists.python.it
> >http://lists.python.it/mailman/listinfo/python
>
> Salvato in corner...
> O era coroner?
>
> :-P
> --
> Gollum1
>
> Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e
> gli errori di battitura (maledetto correttore ortografico).
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Roberto Polli
__repr__ don't print

Pace,
R.

Il 8 febbraio 2016 21:17, Manlio Perillo  ha scritto:
> 2016-02-08 20:52 GMT+01:00 Christian Barra :
>>
>>
>> Il giorno 8 febbraio 2016 20:42, Manlio Perillo 
>> ha scritto:
>>>
>>> 4. encoding non impostato correttamente su terminale?
>>>
>>> Christian: prova a fare, da jupiter:
>>>
>>> >>> s = df_1.loc[1,"DESCRIZIONE"]
>>> >>> print(type(s))
>>
>>
>>  
>>
>>> >>> print(repr(s))
>>
>
> Strano.  Se fai:
 df_1 = pd.read_csv(URL, encoding="latin-1")
>
> mi aspetto che ti restituisca stringhe unicode.
>
 print(type(df.loc[1,"DESCRIZIONE"]))
> stampa str oppure unicode?
>
> Se stampa unicode potrebbe essere un bug di panda/urllib, altrimenti
> significa che panda fa qualcosa di veramente brutto, ma di brutto
> brutto brutto nè (cit).
>
> Ciao   Manlio
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Andrea D'Amore
2016-02-08 19:19 GMT+01:00 Christian Barra :
>> curl -I 'urlDaDoveScaricoUnFileCSV'

> "Il vino bianco D.O.C. 5 terre � ricavato

Ok ma l'uscita di curl qual è?

> Problema di encoding del file csv (viene generato da uno script php che legge 
> i dati direttamente dal db)

O forse dato che usi py3 (visto urllib.request) lui sta salvando tutto
in utf-8 a tua insaputa. O il tuo emulatore di terminale non è ben
configurato. O il tuo locale.

-- 
Andrea
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Gollum1
Il 08 febbraio 2016 21:46:37 CET, Roberto Polli  ha 
scritto:
>Scusate il TP
>
>Il 8 febbraio 2016 21:17, Manlio Perillo  ha
>scritto:
 >>> print(repr(s))
>__repr__ don't print ;)
>
>Pace,
>R.
>___
>Python mailing list
>Python@lists.python.it
>http://lists.python.it/mailman/listinfo/python

Salvato in corner...
O era coroner?

:-P
-- 
Gollum1

Inviato dal mio dispositivo Android con K-9 Mail. Perdonate la brevità e gli 
errori di battitura (maledetto correttore ortografico).
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
>
> "Il vino bianco D.O.C. 5 terre � ricavato
>>
>
> Problema di encoding del file csv (viene generato da uno script php che
> legge i dati direttamente dal db)
>

Mi sono dimenticato del ?, era una domanda

>


-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
Il giorno 8 febbraio 2016 18:37, Andrea D'Amore  ha
scritto:

> 2016-02-08 18:22 GMT+01:00 Christian Barra :
> > Cosa potrebbe essere ?
>
> curl -I 'urlDaDoveScaricoUnFileCSV'
>

"Il vino bianco D.O.C. 5 terre � ricavato

Problema di encoding del file csv (viene generato da uno script php che
legge i dati direttamente dal db)



-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione enrico franchi
2016-02-08 18:58 GMT+00:00 Christian Barra :

> I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da
> python b'stringona' ?
>
>>
A me verrebbe da dire che se df_1 = pd.read_csv(URL, encoding="latin-1")
fallisce (ovvero non fa quello che vuoi) vuole dire che:
1. c'e' un baco in pandas
2. c'e' un baco in urllib2 (usi Python 2?)
3. il file che ti arriva effettivamente non e' in latin-1

Senza fare analisi binaria di quello che ti arriva, e' complicato risolvere.

BTW, il codice critico e' qui:
https://github.com/pydata/pandas/blob/master/pandas/io/common.py

e la roba inizia qui:
https://github.com/pydata/pandas/blob/master/pandas/io/parsers.py#L244

Non mi ero accorto mai di quanto facesse cacare il codice di Pandas, per
inciso.

-- 
.
..: -enrico-
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Christian Barra
Il giorno 8 febbraio 2016 20:42, Manlio Perillo 
ha scritto:
>
> 4. encoding non impostato correttamente su terminale?
>
> Christian: prova a fare, da jupiter:
>
> >>> s = df_1.loc[1,"DESCRIZIONE"]
> >>> print(type(s))
>

 

>>> print(repr(s))
>

"Il vino bianco D.O.C. 5 terre è ricavato.



>
> > [...]
>
> Ciao  Manlio
> ___
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 

I wish you a good day,
Christian
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Manlio Perillo
2016-02-08 20:36 GMT+01:00 enrico franchi :
>
> 2016-02-08 18:58 GMT+00:00 Christian Barra :
>>
>> I dati contenuti sono sempre gli stessicon "b" cosa intendi ? Da
>> python b'stringona' ?
>
>
> A me verrebbe da dire che se df_1 = pd.read_csv(URL, encoding="latin-1")
> fallisce (ovvero non fa quello che vuoi) vuole dire che:
> 1. c'e' un baco in pandas
> 2. c'e' un baco in urllib2 (usi Python 2?)
> 3. il file che ti arriva effettivamente non e' in latin-1
>

4. encoding non impostato correttamente su terminale?

Christian: prova a fare, da jupiter:

>>> s = df_1.loc[1,"DESCRIZIONE"]
>>> print(type(s))
>>> print(repr(s))

> [...]

Ciao  Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Pandas ed Encoding

2016-02-08 Per discussione Manlio Perillo
2016-02-08 20:52 GMT+01:00 Christian Barra :
>
>
> Il giorno 8 febbraio 2016 20:42, Manlio Perillo 
> ha scritto:
>>
>> 4. encoding non impostato correttamente su terminale?
>>
>> Christian: prova a fare, da jupiter:
>>
>> >>> s = df_1.loc[1,"DESCRIZIONE"]
>> >>> print(type(s))
>
>
>  
>
>> >>> print(repr(s))
>

Strano.  Se fai:
>>> df_1 = pd.read_csv(URL, encoding="latin-1")

mi aspetto che ti restituisca stringhe unicode.

>>> print(type(df.loc[1,"DESCRIZIONE"]))
stampa str oppure unicode?

Se stampa unicode potrebbe essere un bug di panda/urllib, altrimenti
significa che panda fa qualcosa di veramente brutto, ma di brutto
brutto brutto nè (cit).

Ciao   Manlio
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python