1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CSVファイルの読込(Python Pandas VS Power Query)

1
Last updated at Posted at 2026-08-08

はじめに

去年BIの研修を受ける機会を頂きました。研修ではPythonに触れる必要があり、苦労しながらも修了したので、せっかくならPythonも習得したいと思うようになり、学んだことを記事にします。

最近、学ぶ動機は自分軸で考えるべきなのかなって思ってます。

  • Pythonってエンジニアが扱うものでしょ?
  • オペレーション部門なのにそこまでする?
  • 属人化するんじゃないの?

そんな声が聞こえそうで葛藤したこともありましたが、自分はどうしたいのか?
業務であまり使えなかったとしても、内面の声を聞いて学びたいと思うようになりました。

脱線しましたが、最初はCSVファイルの読込です。
今まで使用していたPower QueryのM式と比較してアウトプットしたいと思います。

前提条件

Pandasのモジュールのインストールが必要となります。
もしインストールされていない場合は、以下コマンドで実行が必要です。

pip install pandas

文字コード:Shift_JISのCSV読込

Shift-JISとは日本語向けに作られた文字コードです。

Python Pandasで読込む場合

Pandasのread_csv関数を使います。
引数は相対パスが使えます。
文字コードのパラメータ「encoding="cp932"」とすることでShift-JISが読み込めます。

import pandas as pd

df = pd.read_csv(
    r'Data\student_data_shiftjis.csv',
    encoding="cp932",
)

print(df.shape)
display(df.head())

Power Queryで読込む場合

File.Contents関数、Csv.Document関数を使います。
Csv.Document関数の引数は以下としています。

  • Columnsはnull:列数を自動計算
  • Encoding=932:文字コードがShift-JIS
  • QuoteStyel=Csv:"..."をCSVの引用符とする
let
    ソース = Csv.Document(
        File.Contents("C:\Python\データ収集\Data\student_data_shiftjis.csv"),
        [Delimiter=",", Columns=null, Encoding=932, QuoteStyle=QuoteStyle.Csv]),
        昇格されたヘッダー数 = Table.PromoteHeaders(ソース, [PromoteAllScalars=true])
in
    昇格されたヘッダー数

文字コード:UTF-8のCSV読込

UTF-8とは世界中の文字を扱える標準文字コードです。

Python Pandasで読込む場合

同じくPandasのread_csv関数を使います。
文字コードのパラメータ「encoding="utf-8-sig"」とすることでUTF-8が読み込めます。
※encoding="utf-8"ではなく="utf-8-sig"としているのはBOM付、BOM無の両方を読込むためです。
 BOM…UTF-8であってもCSVファイルを文字化けせず開くためのもの

import pandas as pd

df = pd.read_csv(
    r'Data\StudentScore_UTF-8.csv',
    encoding="utf-8-sig",
)

print(df.shape)
display(df.head())

Power Queryで読込む場合

同じくFile.Contents関数、Csv.Document関数を使います。
Csv.Document関数の引数は以下としています。

  • Columnsはnull:列数を自動計算
  • Encoding=65001:文字コードがUTF-8
  • QuoteStyel=Csv:"..."をCSVの引用符とする
let
    ソース = Csv.Document(File.Contents("C:\Python\データ収集\Data\StudentScore_UTF-8.csv"),
    [Delimiter=",", Columns=null, Encoding=65001, QuoteStyle=QuoteStyle.Csv]),
    昇格されたヘッダー数 = Table.PromoteHeaders(ソース, [PromoteAllScalars=true])
in
    昇格されたヘッダー数

文字コード:Shift_JISかUTF-8か分からないCSVの場合

Power Queryの場合は読込の際に、自動的に文字コードを認識できますので割愛します。
Pythonの場合は、try文を指定する方法がいいのかなぁと思いました。
UTF-8で読込もうとして文字コードエラーが発生したら、Shift-JISと判断して再読込みします。

import pandas as pd

file_path = r'Data\StudentScore_UTF-8.csv'

try:
    df = pd.read_csv(
        file_path,
        encoding="utf-8-sig",
    )
except UnicodeDecodeError:
    df = pd.read_csv(
        file_path,
        encoding="cp932",
    )

print(df.shape)
display(df.head())

勉強会のおかげで

Pythonは研修で学んで少し身近になりましたが、非エンジニアにとってインストールして使うには、ハードルが高いと感じておりました。
そんな中、Makinoさん主催のPython勉強会に参加させていただき、Pythonのインストールや、仮想環境の設定、VSCodeの設定など導入に関する内容を学ばせていただきました。

Jupyterの拡張機能やipykernelのインストールも初めて知ったので、一人で試していると大変だったと思います。
本当にありがとうございます(__)

次回の内容

今度はExcelファイルの読込をPython PandasとPower Queryで試して記事にしてみたいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?