Edited at

【Python】pandasで日本語のcsvを文字化けせずに読み込む(さらに日本語で書かれた列を抽出する)

More than 1 year has passed since last update.

Python2.7.6をpycharmでデータ分析をしようと思い立ち絶賛勉強中です。

今回は、解析対象の日本語で書かれたcsvファイルを読み込んだところ

見事に文字化けしたファイルが出力されました。

いろいろ調べた結果、以下の方法で解決しました。


なぜcsvファイルが文字化けしたのか

文字化けしたファイルは前に作成したエントリーと同様の方法で

行いました。

import pandas as pd

import os

# データが格納されている作業ディレクトリまでパス指定
os.chdir("/ディレクトリまでのファイルパス")
# csvの読み取り
df= pd.read_csv("japanese.csv")
print df

しかし、csvの読み取りの際に、文字コードを指定していなかったため、

無事文字化けしたファイルが読み取られました。


文字化けしない日本語csvファイルの読み取り方法

そこで、次のような方法でcsvファイルをSHIFT-JISで読み取ったところ、

見事、日本語でcsvファイルが表示されました!

import pandas as pd

import os

# データが格納されている作業ディレクトリまでパス指定
os.chdir("/ディレクトリまでのファイルパス")
# 文字コードを指定したcsvの読み取り
df= pd.read_csv("japanese.csv",encoding="SHIFT-JIS")
print df

さて、このように日本語csvファイルが読み込めたので、いよいよデータを加工するぞ!

となったのですが、文字コードをいろいろ弄っているうちに、日本語で指定した列を

取得することができず、またもや苦戦しました...


日本語で書かれた列のみを抽出する

欲しい列のみを取ってくるには、明示的にcolumnを指定する

loc[:,"欲しい列名"]

を記載すれば、”欲しい列名”以下の列をすべて取得してくれるそうです。

こちらに詳しい解説が載っています。

結果、次のように記載するば、

"欲しい列の名前"が書かれている列を

ごそっと取得することができました!

import pandas as pd

import os

# データが格納されている作業ディレクトリまでパス指定
os.chdir("/ディレクトリまでのファイルパス")
# 文字コードを指定したcsvの読み取り
df= pd.read_csv("japanese.csv,encoding="SHIFT-JIS"")
column = df.loc[:,[u'欲しい列の名前']]
print column

今回も基本的なところで躓いてしまっているのですが、

もし、同じ悩みを抱えている人がいたら参考になればと....