[PYTHON] Vorsichtsmaßnahmen bei der Verwendung von Codecs und Pandas

Umgebung

Ausführung

$ python --version
Python 2.7.12 :: Continuum Analytics, Inc.
$ pip freeze | grep pandas
pandas==0.19.1

Beispieldatei

$ file --mime sample.tsv
sample.tsv: text/plain; charset=utf-8
$ cat sample.tsv
ID-Sprache
1 Japaner
2 Englisch

codecs

Zuallererst "Codecs"

>>> open("sample.tsv", "r").read()
'ID\t\xe8\xa8\x80\xe8\xaa\x9e\n1\t\xe6\x97\xa5\xe6\x9c\xac\xe8\xaa\x9e\n2\t\xe8\x8b\xb1\xe8\xaa\x9e\n'
>>> import codecs
>>> codecs.open("sample.tsv", "r", "utf-8").read()
u'ID\t\u8a00\u8a9e\n1\t\u65e5\u672c\u8a9e\n2\t\u82f1\u8a9e\n'

Wenn Sie es mit "Codecs" lesen, wird es zu "Unicode".

pandas

Die Funktion "read_table", die beim Lesen von "tsv" hilfreich ist.

>>> import pandas as pd
>>> df = pd.read_table(open("sample.tsv", "r"))
>>> df
ID-Sprache
0 1 Japanisch
1 2 Englisch
>>> df.columns
Index([u'ID', u'Sprache'], dtype='object')
>>> df[u"Sprache"]
Traceback (most recent call last):
  ...
KeyError: u'\u8a00\u8a9e'
>>> list(df.columns)
['ID', '\xe8\xa8\x80\xe8\xaa\x9e']
>>> type(list(df.columns)[1])
<type 'str'>
>>> df["Sprache"]
0 Japanisch
1 Englisch
Name:Sprache, dtype: object

Ich bin nicht sicher, ob "u" in der Anzeige von "df.columns" angezeigt wird. Es ist verständlich, dass der Typ der Zeichenfolge "str" ist.

codecs & pandas

with read_table

Dann, wenn Sie "Codecs" verwenden und mit "read_table" lesen

>>> df = pd.read_table(codecs.open("sample.tsv", "r", "utf-8"))
>>> df
ID-Sprache
0 1 Japanisch
1 2 Englisch
>>> df[u"Sprache"]
Traceback (most recent call last):
  ...
KeyError: u'\u8a00\u8a9e'
>>> df["Sprache"]
0 Japanisch
1 Englisch
Name:Sprache, dtype: object

Es scheint aus irgendeinem Grund "str" zu sein.

without read_table

>>> from collections import defaultdict
>>> data = defaultdict(list)
>>> f = codecs.open("sample.tsv", "r", "utf-8")
>>> labels = f.readline()[:-1].split("\t") #Teilen Sie andere Zeilenumbrüche als Zeilenumbrüche
>>> values = f.readline()[:-1].split("\t") #Teilen Sie andere Zeilenumbrüche als Zeilenumbrüche
>>> for label, value in zip(labels, values):
...     data[label].append(value)
... 
>>> df = pd.DataFrame(data)
>>> df
ID-Sprache
0 1 Japanisch
>>> df["Sprache"]
Traceback (most recent call last):
  ...
KeyError: '\xe8\xa8\x80\xe8\xaa\x9e'
>>> df[u"Sprache"]
0 Japanisch
Name:Sprache, dtype: object
>>> list(df.columns)
[u'ID', u'\u8a00\u8a9e']
>>> type(list(df.columns)[1])
<type 'unicode'>

Ohne read_table zu benutzen Beim Lesen mit "Codecs", Es war wie erwartet.

Recommended Posts

Vorsichtsmaßnahmen bei der Verwendung von Codecs und Pandas
Vorsichtsmaßnahmen bei Verwendung der for-Anweisung in Pandas
Vorsichtsmaßnahmen bei der Verwendung von Chainer
Bei Verwendung von if und bei Verwendung von while
Vorsichtsmaßnahmen bei der Verwendung der TextBlob-Merkmalsanalyse
Vorsichtsmaßnahmen bei Verwendung der Funktion urllib.parse.quote
Vorsichtsmaßnahmen bei der Verwendung von Phantomjs aus Python
Vorsichtsmaßnahmen bei Verwendung von sechs mit Python 2.5
Vorsichtsmaßnahmen und Fehlerbehandlung beim Aufrufen der .NET-DLL aus Python mit Pythonnet
Vorsichtsmaßnahmen bei der Verwendung von tf.keras.layers.TimeDistributed für die benutzerdefinierte Ebene von tf.keras
Vorsichtsmaßnahmen bei Verwendung der Google Cloud-Bibliothek mit GAE / py
Fehler, der in OpenCV3 und seiner Lösung aufgetreten ist. Vorsichtsmaßnahmen bei Verwendung von OpenCV3 auf dem Mac
Vorsichtsmaßnahmen beim Umgang mit Luigi
Vorsichtsmaßnahmen bei Verwendung von sqlite3 von macOS Sierra (10.12) mit Multiprocessing
Kreuztabelle mit Pandas
Installation von Jupyter und Pandas
Pandas Index und Reindex
Tipps und Vorsichtsmaßnahmen beim Portieren von MATLAB-Programmen nach Python
Pandas resample und rollen
Vorsichtsmaßnahmen bei der Installation von fbprophet
Zusammenfassung der Dinge, die bei der Verwendung von Pandas praktisch waren
Pandas Mittelwertbildung und Auflistung
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Vorsichtsmaßnahmen beim Ändern der Unix-Zeit in Datetime-Typ in Pandas
Analysieren Sie die Aktienkurse mithilfe der Pandas-Datenaggregation und der Gruppenoperationen
[Python] Zufällige Datenextraktion / -kombination aus DataFrame mit Random und Pandas
Vorsichtsmaßnahmen und Lösungen bei der Installation von Ubuntu auf einem PC mit NVIDIA Gravo
(Persönliche) Punkte bei Verwendung von ctypes
Umgebungsvariablen bei Verwendung von Tkinter
Vorsichtsmaßnahmen für das TensorFlow-Upgrade (auf 1.3)
Bei Verwendung von optparse mit iPython
Wichtige Ergänzungen zu den Pandas 1.1.0 und 1.0.0
DEBUG-Einstellungen bei Verwendung von Django
Dateistruktur bei Verwendung von Serverless-Python-Anforderungen
Dies und das mit reflektieren
Versuchen Sie es mit pytest-Overview und Samples-
Verwenden Sie configparser, wenn Sie die API verwenden
Datenanalyse mit Python-Pandas
Vorsichtsmaßnahmen bei Verwendung einer Liste oder eines Wörterbuchs als Standardargument
[Python] Fehler- und Lösungsnotiz bei Verwendung von venv mit pyenv + anaconda
Vorsichtsmaßnahmen beim Übergeben von def an sortierte und gruppierte Funktionen in Python? ??
So formatieren Sie eine Tabelle mit Pandas Apply, Pivot und Swaplevel