自動化無しに生活無し

WEBとかAIとかLinux関係をひたすら書く備忘録系ブログ

【データ分析】pandasの基本的な使い方、グラフ描画、ファイル読み書き、計算等【バックエンドにopenpyxlとmatplotlibを使う】

thumbnail

pandasでファイルの読み込み、演算、グラフ描画、ファイル書き込みの基本操作関係を記す。

前提

data.xlsx及びdata.csvの内容を下記とする。これをPythonのファイルと同じディレクトリに格納する。

ライブラリインストールのコマンドは下記。

pip install openpyxl pandas matplotlib

pandasの使い方

CSVやエクセルのファイルをそのまま読み込んで分析できる。

ファイルの読み込み

.read_csv()メソッドでCSVを読み込む。

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import pandas as pd  
print(pd.__version__)

df  = pd.read_csv("data.csv")
print(df)

以下、実行結果。

1.1.5
     生徒名  英語  数学  国語  理科  社会
0    Ash  87  69  55  99  59
1    Bob  88  78  48  66  79
2  Carol  57  66  86  92  71

.read_excel()でエクセルファイルの読み込みができる。engine='openpyxl'の指定をお忘れなく。

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import pandas as pd  
print(pd.__version__)

df  = pd.read_excel("data.xlsx",engine='openpyxl' )
print(df)

以下、実行結果。

1.1.5
     生徒名  英語  数学  国語  理科  社会
0    Ash  87  69  55  99  59
1    Bob  88  78  48  66  79
2  Carol  57  66  86  92  71

参照元:https://stackoverflow.com/questions/65254535/xlrd-biffh-xlrderror-excel-xlsx-file-not-supported

演算

演算はDataFrameのメソッドから簡単に実行できる。

参照元: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html

参照

まず値の参照から。dfの型は<class 'pandas.core.frame.DataFrame'>であり、オブジェクトであるが、辞書型のようにキーを指定してデータの一覧を手に入れることができる。(挙動が完全な辞書型ではない点に注意。)

for d in df["数学"]:
    print(d)

実行結果。

69
78
66

平均

.mean()メソッドを使用する。

列ごとの平均。これで科目ごとの平均点が出せる。

print(df.mean())

実行結果

英語    77.333333
数学    71.000000
国語    63.000000
理科    85.666667
社会    69.666667
dtype: float64

行ごとの平均。これで生徒ごとの平均点になる。

print(df.mean(axis="columns"))

実行結果

0    73.8
1    71.8
2    74.4
dtype: float64

名前で表示して欲しい場合は、ファイル読み込み時にindex_col=0を指定する。

df  = pd.read_csv("data.csv",index_col=0)

実行結果

生徒名
Ash      73.8
Bob      71.8
Carol    74.4
dtype: float64

参照元: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.mean.html

合計

合計は.sum()メソッドを使用する。.mean()と同様にaxis引数を使用することで列に対して実行することができる。

科目ごと、生徒ごとの合計値の表示が可能。

print(df.sum())
print(df.sum(axis="columns"))

実行結果

生徒名    AshBobCarol
英語             232
数学             213
国語             189
理科             257
社会             209
dtype: object
0    369
1    359
2    372
dtype: int64

参照元: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.sum.html

グラフ描画

.plot()メソッドを実行して、グラフデータをセットする。

グラフ描画はバックエンドとしてmatplotlibを使用する。.show()でグラフデータをウィンドウで表示。

df.plot() 

import matplotlib.pyplot as plt
plt.show()

フォントが用意されていないので、豆腐になっている。日本語を表示させたいのであれば下記を参照

参照: https://qiita.com/yniji/items/3fac25c2ffa316990d0c

ファイル書き込み

.to_csv()でCSVへ書き込みができる

下記は科目ごとの合計を計算している。

sumdf   = df.sum()
sumdf.to_csv("sum.csv")

エクセルファイルに書き込みがしたい場合は、下記の様にする。ただし、何も設定を施さないと、やや見づらい書式になってしまう。

sumdf   = df.sum()
sumdf.to_excel("sum.xlsx",engine="openpyxl")

参照元

matplotlibの参照元

openpyxlの参照元

スポンサーリンク

シェアボタン

Twitter LINEで送る Facebook はてなブログ