※本ブログのページには広告主との提携による広告や宣伝、プロモーションが含まれます。当ブログを経由しての商品の購入や、サービス申し込みが発生すると、それらの提携企業からの成果報酬を受けとる場合があります。

事務作業につかえるpythonのおすすめライブラリ3つを紹介

<strong>komori</strong>
komori

こんにちは。今回はpythonでおすすめしたい便利なライブラリを紹介します。

ここではエンジニアや、これからエンジニアを目指すといった目線ではなく、売上計算や経費計算、数値の推移などを確認したり、記録するといった日常的に事務作業を業務としておこなっている人が便利になるといった目線でpythonのおすすめライブラリを3つ紹介したいと思います。

どのライブラリもとても優秀な機能が備わっていて簡単にあつかうことができるものとなっています。
これらのライブラリをつかったコードを記事内で紹介していますので、ここで紹介しているライブラリはどんなことができるか雰囲気をつかめると思います。
ご自身の業務や作業に役立つものがあれば、是非ご自身でもつかってみてください。

もっとpythonを学びたい!
現役エンジニアから学べて転職支援の相談もできる

無料相談・体験はこちら

【結論】事務作業につかえるpythonのおすすめライブラリ

おすすめしたいpythonの外部ライブラリは以下の3つとなります。

Matplotlib

Matplotlib(マットプロットリブ)は、いろいろなグラフを表示することができるライブラリです。エクセルなどの表計算ソフトとの相性が良いのでこれらのデータから視覚的にわかりやすくすることができます。

Seaborn

Seaborn(シーボーン)も、グラフを描画することが可能なライブラリです。Matplotlibと比べて見た目にこだわったグラフを出力することができます。

Pandas

Pandas(パンダス)はデータ分析ができるライブラリです。データフレーム(エクセルの表のような)形式でデータを管理することや処理をすることができます。

これらのライブラリをつかうための準備とそれぞれをつかっていきます。

環境を準備する:Python外部ライブラリをインストール

pythonライブラリについて

Pythonではライブラリと言われる特殊な機能を持つプログラムをまとめたものがあります。

また、ライブラリの中でもPythonに最初からインストールされている標準ライブラリと、別途インストールをすることで使うことが出来る外部ライブラリが存在します。

ライブラリは沢山あるため全てを覚える必要はありません。実装したいプログラムに適したライブラリをインターネットで探して利用しましょう。

Pythonの標準ライブラリ外部ライブラリ一覧は以下のサイトで確認することができます。

Python 標準ライブラリ
Python 言語リファレンス ではプログラミング言語 Python の厳密な構文とセマンティクスについて説明されていますが、このライブラリリファレンスマニュアルでは Python とともに配付されている標準ライブラリについて説明します。ま...

https://pypi.org/

グラフを表示するための外部ライブラリ(matplotlib)がありますのでインストールします。

Pythonライブラリのインストール方法

外部ライブラリのインストール方法については、ターミナル(Windowsの場合にはコマンドプロンプト)にて、pipコマンドを使ってください。

macならアプリ検索で「ターミナル」と入力、Windows場合は「コマンド プロンプト」と入力してアプリを起動してください。

matplotlib(マットプロットリブ)をインストール

pip install matplotlib

seaborn(シーボーン)をインストール

pip install seaborn

pandas(パンダス)をインストール

pip install pandas

てインストールが出来たら完了です。

これでライブラリは使用可能になりましたので、次から実際のPythonコードでライブラリを使う方法をみていきましょう。

Pythonで折れ線グラフを表示するコード

<strong>komori</strong>
komori

先ずは今回書いてみたコード全文です。解説は後ほど行います。

入力コード

import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns

sns.set(style='darkgrid',font='Yu Gothic')

x1 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y1 =[20,22,19,20,23]
x2 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y2 =[19,21,20,21,19]
x3 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y3 =[22,19,20,22,21]
x4 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y4 =[21,20,21,22,18]

plt.figure(figsize=(15,5))
plt.title('各スタッフ出勤状況比較')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x1, y1,label ='Aさん')
plt.plot(x2, y2,label ='Bさん')
plt.plot(x3, y3,label ='Cさん')
plt.plot(x4, y4,label ='Dさん')
plt.legend()
plt.show()

実行結果

pythonでmatplotlibをつかって出力した折れ線グラフの画像
<strong>Deviko</strong>
Deviko

色んな場面でよく見かける折れ線グラフよね。

<strong>komori</strong>
komori

折れ線グラフは時系列で数値の増減や比較する時によく使われるグラフです。今回はサンプルとしてAさん・Bさん・Cさん・Dさんの出勤状況のデータを作って、グラフに表示してみました。

グラフ表示に必要なライブラリ(matplotlib)をインポート

import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns

ライブラリとは特定の機能をまとめたプログラムであり、様々な機能を使うためのコードとなります。
プログラムの目的(本記事で言えばグラフを表示する)に応じたライブラリがあればどんどん使っていきましょう。

import ライブラリ名 as ●●

<strong>komori</strong>
komori

ライブラリ名に入力したものを●●として使っていきますよ。と宣言する様なイメージです。

ライブラリ名を覚える必要はありませんが、参考までに今回使用しているライブラリの参照ページを掲載しておきます。

ライブラリ名 参照ページ(URL)
matplotlib https://matplotlib.org/stable/api/pyplot_summary.html?highlight=pyplot#module-matplotlib.pyplot
seaborn https://seaborn.pydata.org/api.html
pandas https://pandas.pydata.org/docs/index.html

コード全文から該当する箇所のみを抜粋して見てみましょう。

入力コード

import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns

sns.set(style='darkgrid',font='Yu Gothic')

コード内の1行目、import matplotlib.pyplot as pltは、ライブラリの「matplotlib.pyplot」とインポートして、「Plt」として使えるようにする。という意味のコードになります。3行目のimport seaborn as snsも1行目同様にライブラリの「seaborn」をインポートして「sns」として使えるようにする。といったコードになります。

2行目・4行目はそれぞれのライブラリが日本語表示に対応するための基本設定コードです。

<strong>komori</strong>
komori

ライブラリのインポート文は冒頭に書きます。

必要なライブラリを使うための準備ができたらグラフの中身となるデータを作ります。

matplotlibライブラリで表示するグラフの元データを作る

<strong>Deviko</strong>
Deviko

今度はグラフのもととなるデータを作っていくのね。

職場の出勤状況を比較するグラフを表示することを想定して、サンプルデータを作成してみます。
ここでは、スタッフ4名の2022年6月から10月までの出勤日数データを作成することにします。

入力コード

#Aさんの出勤状況データ
x1 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y1 =[20,22,19,20,23]

#Bさんの出勤状況データ
x2 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y2 =[19,21,20,21,19]

#Cさんの出勤状況データ
x3 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y3 =[22,19,20,22,21]

#Dさんの出勤状況データ
x4 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y4 =[21,20,21,22,18]

グラフの元となるX(横)軸には月の値を変数に代入し、Y(縦)軸には出勤した日数の値を変数に代入しています。

ここまででグラフを表示するための「ライブラリの準備(インポート)」やグラフの「元データの作成」が完了しました。
あとはグラフを表示するために必要なコードを書いていきます。

matplotlibライブラリでグラフを表示するコードを書く

<strong>komori</strong>
komori

上から順番にグラフ全体に関わる設定グラフの元データを指定グラフに出力いった流れでコードを書きます。

入力コード

#グラフ全体表示に関する設定コード
plt.figure(figsize=(15,5))
plt.title('各スタッフ出勤状況比較')
plt.xlabel('月')
plt.ylabel('出勤日数')

#個別のデータのセットとラベル名をつけるためのコード
plt.plot(x1, y1,label ='Aさん')
plt.plot(x2, y2,label ='Bさん')
plt.plot(x3, y3,label ='Cさん')
plt.plot(x4, y4,label ='Dさん')

#凡例を表示するためのコード
plt.legend()

#出力するコード
plt.show()
<strong>Deviko</strong>
Deviko

グラフを表示するために必要なライブラリの準備、グラフの元となるデータの作成、グラフを表示する。のパートに分かれていると見るとわかりやすいね。

Pythonで折れ線グラフを表示するコード(複数に分けて表示)

<strong>komori</strong>
komori

さて、先ほどは一つのグラフに4つのデータが表示されていて各スタッフの出勤状況を比較しやすいグラフとして表示しましたね。今度はそれぞれ個別のグラフにして別々に表示するコードを書いてみます。

入力コード

import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns

sns.set(style='darkgrid',font='Yu Gothic')

#グラフの元となるデータ
x1 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y1 =[20,22,19,20,23]
x2 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y2 =[19,21,20,21,19]
x3 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y3 =[22,19,20,22,21]
x4 =['2022/6','2022/7','2022/8','2022/9','2022/10']
y4 =[21,20,21,22,18]

#グラフ全体設定
plt.figure(figsize=(18,13))

#グラフ左上
plt.subplot(2, 2, 1)
plt.title('Aさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x1, y1)

#グラフ右上
plt.subplot(2, 2, 2)
plt.title('Bさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x2, y2,color="orange")

#グラフ左下
plt.subplot(2, 2, 3)
plt.title('Cさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x3, y3,color="green")

#グラフ右下
plt.subplot(2, 2, 4)
plt.title('Dさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x4, y4,color="red")

実行結果

pythonでmatplotlibをつかって出力した折れ線グラフの画像2
<strong>Deviko</strong>
Deviko

Aさん、Bさん、Cさん、Dさんの出勤状況がそれぞれのグラフで表示されているよ♡

<strong>komori</strong>
komori

1つめのコードと違っている点は、グラフを出力するための部分のみです。
ライブラリのインポート部分やデータの作成に使ったコードはそのままですので説明は割愛します。

matplotlibライブラリでグラフを表示するコードを書く

<strong>komori</strong>
komori

コードが長くなっていますが、それぞれのグラフの設定部分でコードを書いているためです。コードは上から「グラフの全体設定」をおこない、表示領域を4分割にしてそれぞれの出勤状況データをグラフにして表示している様なイメージです。

入力コード

#グラフ全体設定
plt.figure(figsize=(18,13))

#グラフ左上
plt.subplot(2, 2, 1)
plt.title('Aさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x1, y1)

#グラフ右上
plt.subplot(2, 2, 2)
plt.title('Bさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x2, y2,color="orange")

#グラフ左下
plt.subplot(2, 2, 3)
plt.title('Cさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x3, y3,color="green")

#グラフ右下
plt.subplot(2, 2, 4)
plt.title('Dさん出勤状況')
plt.xlabel('月')
plt.ylabel('出勤日数')
plt.plot(x4, y4,color="red")

グラフの表示位置を決定しているコードは下記です。

plt.subplot(2, 2, 1)の()内の引数は、
行数・列数・位置となっていて、左上から番号を割り振られています。

上のコード場合は1枚の紙を4分割にして、左上の位置に表示するといった意味になります。

pythonでグラフをプロットする表示エリアの表示領域と位置のイメージ画像
※グラフの色に合わせてそれぞれの表示領域を着色しています。
それ以外のコードとして、下記を設定するために書いています。
  • plt.title() …グラフのタイトルを付与します。
    例:Aさん出勤状況など

  • plt.xlabel() …グラフのX(横)軸のタイトルを付与します。
    例:月など

  • plt.ylabel() …グラフのY(縦)軸のタイトルを付与します。
    例:出勤日数など

  • plt.plot()
    例:引数はX軸とY軸のデータ(値)を指定、colorはグラフの色を指定しています。


Pythonで円グラフを表示するコード

<strong>komori</strong>
komori

今度は円グラフを表示するコードを書いてみましょう。
ここでは、3人の4月~6月の売上金額と合計金額をグラフにしてみます。

コードの書く順番は以下のとおり、それぞれのブロック別に見ていけば読み取りやすくなります。

  1. ライブラリのインポートや準備するブロック
  2. グラフに表示するデータを作成するブロック
  3. それぞれのデータをグラフ化するブロック

入力コード

#円グラフを表示するコード全文
import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns   
sns.set(style='darkgrid',font='Yu Gothic')

data ={'4月売上金額':[2200,550,2250],
       '5月売上金額':[1450,6500,2000],
       '6月売上金額':[4000,1900,2500],
      }
idx = ['Aさん','Bさん','Cさん']
df = pd.DataFrame(data,index=idx)
colors = ["red", "gold", "green"]

plt.figure(figsize=(25,20))
#4月売上
plt.subplot(1,4,1)
df['4月売上金額'].plot.pie(startangle=90, counterclock=False, colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

#5月売上
plt.subplot(1,4,2)
df['5月売上金額'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

#6月売上
plt.subplot(1,4,3)
df['6月売上金額'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

df['売上合計']= df.sum(axis = 1)#行

#合計
plt.subplot(1,4,4)
df['売上合計'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

plt.show()
display(df)

実行結果

pythonでmatplotlibをつかって出力した円グラフの画像
4月~6月の売上割合をそれぞれ円グラフに、更に3ヵ月合計の割合を円グラフにしたもの

グラフ表示に必要なライブラリをインポート

<strong>komori</strong>
komori

今度はデータフレーム(表)を使ったので、新たに「Pandas(パンダス)」を追加して使っています。
エクセルデータの読み書きができたりするのでとても便利なライブラリです。

入力コード

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns   
sns.set(style='darkgrid',font='Yu Gothic')
<strong>Deviko</strong>
Deviko

赤くなっている文字の部分が新たに追記した部分ね・・・パンダ?♡

pandasの特徴等については以下のとおりです。

グラフにするデータを作る

<strong>komori</strong>
komori

グラフにするためのデータを作るためのコードは以下のとおり。

dataの中身4月~6月の売上金額となっており、それぞれの列が’Aさん’、’Bさん’、’Cさん’となるように書いています。

入力コード

data ={'4月売上金額':[2200,550,2250],
       '5月売上金額':[1450,6500,2000],
       '6月売上金額':[4000,1900,2500],
      }
idx = ['Aさん','Bさん','Cさん']
df = pd.DataFrame(data,index=idx)
colors = ["red", "gold", "green"]

この時点でのデータフレーム(表)は以下のとおりです。
コード内の”idx = [‘Aさん’,’Bさん’,’Cさん’]“でデータフレームのインデックスになります。

df = pd.DataFrame(data,index=idx)“で最左列(インデックス)にAさん、Bさん、Cさんのリストデータを指定しています。

スタッフ名/月 4月売上金額 5月売上金額 6月売上金額
Aさん 2200 1450 4000
Bさん 550 6500 1900
Cさん 2250 2000 2500
グラフにするデータを表にしたもの。売上合計はこの後のコードで追加していきます。
<strong>Deviko</strong>
Deviko

この時点では合計はついていないのね♡

<strong>komori</strong>
komori

最終行のコード「colors = [“red”, “gold”, “green”]」はグラフの色をリストにしており、Aさんを赤色、Bさんをゴールド、Cさんを緑に指定しているコードです。

グラフを表示するコードを書く

<strong>Deviko</strong>
Deviko

グラフを表示する準備・グラフのデータを作るがおわったから、いよいよグラフを表示していくわけね♡

入力コード

plt.figure(figsize=(25,20))
#4月売上
plt.subplot(1,4,1)
df['4月売上金額'].plot.pie(startangle=90, counterclock=False, colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

#5月売上
plt.subplot(1,4,2)
df['5月売上金額'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

#6月売上
plt.subplot(1,4,3)
df['6月売上金額'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

df['売上合計']= df.sum(axis = 1)#行
※Aさん、Bさん、Cさんの行を合計して、"売上合計"の列を表に付け加える。

#合計
plt.subplot(1,4,4)
df['売上合計'].plot.pie(startangle=90, counterclock=False,colors=colors,labeldistance=0.7,autopct="%1.1f%%")
plt.title('売上割合')

plt.show() #グラフを出力する
display(df) #売上合計を追加した表を出力する
<strong>komori</strong>
komori

こちらもコードが長く見えますが、グラフを4つ表示しているためです。
上から順に4月売上、5月売上、6月売上の列を指定して円グラフに表示しています。

円グラフの場合は「.plot.pie」と書いているところもポイントです。

データフレーム(表)の更新

スタッフ名/月 4月売上金額 5月売上金額 6月売上金額
Aさん 2200 1450 4000
Bさん 550 6500 1900
Cさん 2250 2000 2500

df[‘売上合計’]= df.sum(axis = 1)#行

Aさん・Bさん・Cさんのそれぞれの行を足し算した値をデータフレーム(表)に売上合計の列を付け加えるためのコード。
コード実行後のデータフレーム(表)は以下のとおりで売上合計の列が追加されます。

スタッフ名/月 4月売上金額 5月売上金額 6月売上金額 売上合計
Aさん 2200 1450 4000 7650
Bさん 550 6500 1900 8950
Cさん 2250 2000 2500 6750
一番右側にAさん、Bさん、Cさんの合計金額を列を追加

Pythonで縦棒グラフを表示するコード

<strong>komori</strong>
komori

続いて縦棒グラフも作ってみましょう。縦棒グラフの場合は「plt.bar」と書きます。

入力コード

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib #matplotlib を日本語表示に対応するモジュールインポート
import seaborn as sns   
sns.set(style='darkgrid',font='Yu Gothic')


data={
    'Aさん':[65,80,78,63,52],
    'Bさん':[80,45,67,30,97],
    'Cさん':[28,97,80,70,35],
}

idx=["国語","数学","英語","理科","社会"]
df = pd.DataFrame(data,index=idx)

display(df)

plt.figure(figsize=(20,3))
plt.subplot(1,3,1)
plt.title('Aさんの教科別点数')
plt.bar(idx,df['Aさん'],color="red")

plt.subplot(1,3,2)
plt.title('Bさんの教科別点数')
plt.bar(idx,df['Bさん'],color="blue")

plt.subplot(1,3,3)
plt.title('Cさんの教科別点数')
plt.bar(idx,df['Cさん'],color="gold")

ax = df.plot.bar(title="AさんとBさんの比較",figsize=(20,2.5),rot=0, color={'Aさん': 'red', 'Bさん': 'blue','Cさん':'gold'})

実行結果

pythonでmatplotlibをつかって出力した縦棒グラフの画像
<strong>Deviko</strong>
Deviko

凄いカラフルなグラフになっているわね♡

<strong>komori</strong>
komori

Aさん、Bさん、Cさんの教科別点数のグラフでは、それぞれの長所や短所も見えてきます。
例えばBさんは文系科目の点数が高く、Cさんは理系の教科が得意そうだ。など

また、最後に3人の点数を比較をしたグラフを表示していますので、それぞれの人の点数を目で見て比較しやすくしています。

グラフを表示するコードを書く

<strong>komori</strong>
komori

グラフ表示部分だけのコードを抜き出すと以下のとおりです。

内容を確認していきましょう。

plt.figure(figsize=(20,3))
plt.subplot(1,3,1)
plt.title('Aさんの教科別点数')
plt.bar(idx,df['Aさん'],color="red")

plt.subplot(1,3,2)
plt.title('Bさんの教科別点数')
plt.bar(idx,df['Bさん'],color="blue")

plt.subplot(1,3,3)
plt.title('Cさんの教科別点数')
plt.bar(idx,df['Cさん'],color="gold")

ax = df.plot.bar(title="AさんとBさんの比較",figsize=(20,2.5),rot=0, color={'Aさん': 'red', 'Bさん': 'blue','Cさん':'gold'})

表示する方法に他のグラフと大きな違いはなく、「plt.XXX(x軸,y軸,系列の色)」の’XXX‘部分でグラフの種類を指定していることになります。

Pythonでグラフ表示するまとめ

今回はPythonの外部ライブラリ「matplotlib.pyplot」と「seaborn」更に「pandas」を使ってグラフを表示してみました。

Excelなどでグラフを作成することに慣れている方などにとっては、イメージしているより簡単だったのではないでしょうか。

今回実際にご紹介したものも含め、下記のようなグラフを表示することができます。

グラフの種類 コードで指定する方法
折れ線グラフ plt.plot
ヒストグラム plt.hist
棒グラフ plt.bar
円グラフ plt.pie
箱ひげ図 plt.boxplot
散布図 plt.scatter
※グラフ種類を網羅している訳ではございませんので予めご了承下さい。


本ブログ上ではサンプルデータを用いてグラフを作成してみましたが、応用して実務で使うようなデータなどを取り入れてみると面白いかもしれません。

コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。

コメント

タイトルとURLをコピーしました