---
title: "いますぐPythonでデータ分析するために必要なこととは？前編 | grasys blog"
url: "https://blog.grasys.io/post/nishino/python-1/"
description: "データ分析をするための様々なサービスが世の中にありますが、導入までの期間やコストは気になりますよね。 手軽に卓上である程度分析することもできます。どうすればよいかこの記事で整理していきます。 必要なもの - Windows/macOSどちらでもよいのでPython3.6以上がインストールされているPC - Pytho…"
---

# いますぐPythonでデータ分析するために必要なこととは？前編

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[nishino](/authors/nishino/)
-   公開日：2022年7月29日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#Python](/tags/python/)

![いますぐPythonでデータ分析するために必要なこととは？前編](/_astro/hero.CW6ya7ux_EvuaT.webp)

データ分析をするための様々なサービスが世の中にありますが、導入までの期間やコストは気になりますよね。

手軽に卓上である程度分析することもできます。どうすればよいかこの記事で整理していきます。

### 必要なもの

-   Windows/macOSどちらでもよいのでPython3.6以上がインストールされているPC
    
-   Python教材!
    
-   分析したいデータ
    

### 必要なこと

-   データを手に入れる
    
-   データを汎用的なファイルフォーマットに変換する
    
-   データを分析する
    
-   分析結果を出力する
    

## データを手に入れる

Pythonでデータ分析をするということは取り扱うデータの大きさが大きくなるかもしれず今後のシステム化も視野に入れてCSVファイルフォーマットで手に入れたいですよね

今回はとりあえずこちらのExcelファイルフォーマットを受け取ったという話で進めていきます

![データを手に入れるの画面](/_astro/01-2022-11-21_14-46-12-450x1024-98295d2b.DulkmYoY_1uomHM.webp)

## データを汎用的なファイルフォーマットに変換する

Windows、macOSどちらでも良いですがPythonがインストールされているPCでExcelファイルをPythonで読み込むツールをインストールします

Plain textcontent\_copy

```
pip install openpyxl
```

こちらのツールのドキュメント(英語)は[こちら](https://openpyxl.readthedocs.io/en/stable/index.html)です

### openpyxlの特徴

-   xlsx/xlsm/xltx/xltmファイル形式をPythonで読み書きするツール
    
-   日本語記事もたくさん見つかる有名なツール
    

プログラムを書き始めますが、変換処理を記述するまえにいったん動作確認しましょう

main.pyファイルを下記のように作成します

以下それぞれ書き換えてください

-   file\_name=にはExcelの保存場所
    
-   sheet\_name=にはExcelシートの名前
    

Plain textcontent\_copy

```
from openpyxl.cell.cell import Cell
from openpyxl import load_workbook

def load_excel(file_name, sheet_name):
    wb = load_workbook(filename=file_name, read_only=True)
    ws = wb[sheet_name]

    for row in ws.rows:
        a: Cell
        b: Cell
        c: Cell
        a, b, c = row
        print(f"a: {a.value}, b: {b.value}, c: {c.value}")

    wb.close()

if __name__ == '__main__':
    load_excel(file_name="/Users/nishino/Downloads/Book1.xlsx", sheet_name="Sheet1")
```

記述が終わったらプログラムを実行します

Plain textcontent\_copy

```
python main.py
```

動作しましたか？PythonがExcelシートの中身を認識して読み込めている様子が見えます

![openpyxlの特徴の画面](/_astro/02-2022-11-21_17-04-19-d2c5051b.Ck0N8QEU_ZhoztR.webp)

先頭の2行は表の見出し、3行目以降に分析すべきデータが表示されていますね

ファイルフォーマットと合わせて、分析に必要ない行は削除していきます

続いてファイルフォーマットを変換するためにツールを追加インストールする必要があります

Plain textcontent\_copy

```
pip install pyarrow
```

こちらのツールのドキュメント(英語)は[こちら](https://arrow.apache.org/docs/python/index.html)です

### pyarrowの特徴

-   Apache ArrowというソフトウェアのPython版
    
-   高性能な分析ツール
    

さきほどmain.pyに記述していただいた内容を下記のように書き換えます

ファイルフォーマットを変換するプログラムです

以下それぞれ書き換えてください

-   output\_file\_name=には変換後のファイル保存場所

Plain textcontent\_copy

```
from openpyxl import load_workbook
import pyarrow as pa
import pyarrow.csv as csv

def load_excel(file_name, sheet_name):
    wb = load_workbook(filename=file_name, read_only=True)
    ws = wb[sheet_name]

    a_values = []
    b_values = []
    c_values = []
    for row in ws.rows:
        _a, _b, _c = row

        a_values.append(_a.value)
        b_values.append(_b.value)
        c_values.append(_c.value)

    wb.close()
    return a_values, b_values, c_values

def cleanse_data(rows1, rows2, rows3):
    # テーブルの見出しなど先頭2行を除く
    return rows1[2:], rows2[2:], rows3[2:]

def export_csv(rows1, rows2, rows3, output_file_name):
    options = csv.WriteOptions(include_header=False)

    table = pa.table([rows1, rows2, rows3], names=["A", "B", "C"])
    csv.write_csv(table, output_file=output_file_name, write_options=options)

if __name__ == '__main__':
    a, b, c = load_excel(file_name="/Users/nishino/Downloads/Book1.xlsx", sheet_name="Sheet1")
    cleansed_a, cleansed_b, cleansed_c = cleanse_data(a, b, c)

    a_rows = pa.array(cleansed_a, type=pa.string())
    b_rows = pa.array(cleansed_b, type=pa.float64())
    c_rows = pa.array(cleansed_c, type=pa.timestamp("s"))
    export_csv(a_rows, b_rows, c_rows, output_file_name="sheet1.csv")
```

動作しましたか？新しいファイルが増えてるのでファイルを開いてみてください。

![pyarrowの特徴の画面](/_astro/03-2022-11-21_16-57-13-c61107c0.aFB9xif3_Z10wodE.webp)

これでデータ分析の準備ができました。

前半はここまでです。

後編では実際にデータ分析をしていきます。

## この記事を書いた人

[![](/_astro/nishino.qi9pzvtD_ZQ8ElO.webp)](/authors/nishino/)

### [nishino](/authors/nishino/)

食材も設計もコードもたくさん調理しますよ。

[プロフィールと記事一覧](/authors/nishino/)