有償ライセンスの使用状況集計を手伝わせてもらいました
記事の概要
今回、大学が貸し出している有償ライセンスの使用状況の集計をさせてもらう機会があり、大量のデータを扱った経験がいままでなかった私にとって貴重な経験ができたため、その話をここに書かせてもらおうと思います。
何を集計するのか
ライセンスの使用状況の集計といっても具体的になにをすればいいのか?今回の目標は、
- どのライセンスが何人に貸出されているのかを時間別で知りたい
- 同じPCに同じ時間で複数ライセンスが貸し出されているが本来は1つなので重複を避けた場合の貸し出し数が知りたい
この2つです。
データはどうなってる?
ライセンスの使用状況はすべてエクセルで保存されていました。ライセンスの貸出や返却の日、時刻、ユーザ名やホスト名が一つの行に記録されています。しかし、この行が約7万行あります。1つ1つ自力で数えていくには数が多すぎるので、プログラムを書いて集計をしました。
Pythonを使ってデータを集計
エクセルにアクセスしてデータを扱うスタンダードなプログラミング言語としてPythonとRが代表的ですが、今回はPythonを使いました。また、エクセルファイルを扱う上で必要な外部ライブラリとして、pandasを使いました。複雑な計算をする場合はpandas、エクセルファイルに保存されている書式の読み書きまでする場合はopenpyxlが良いようです。
import pandas as pd
df = pd.read_excel(
'ファイル名.xlsx,
sheet_name = 'シート名',
usecols = [0,4,5,6,7,9,11,14,15]
)
pandasの場合、データフレームとして保存できるので値をいじりやすくなっています。さらに。usecolsで使う行、列を指定できるので、必要な部分だけに集中できます。今回は年度、ライセンスの種類別で実行できるようにするために、usecolsで使う部分のみであらかじめcsvファイルを作成し、そのcsvファイルを使って計算しました。
集計結果はどんな感じ?
実際にPythonで作ったライセンス使用状況のグラフを載せておきます。
このグラフはエクセルのデータの一部をグラフにしたものなのでデータ数は2万程度です。重複を避けた場合も似たようなグラフになりました。あくまで時間別でどのくらいの数ライセンスが使われているかがわかればいいので、今回デザインはほとんど触っていませんが、もっと細かい推移が知りたい場合は点の大きさを調整したり一度に描画するデータ数を減らしたりするなどして見やすくする工夫が必要そうです。
まとめ
もともとデータ解析に興味があった私にとって今回の集計作業はとても楽しいものでした。私はプログラミングが得意ではなく、経験も全然ないので今回の作業に少し苦労してしまいましたが、貴重な経験をさせていただきました。ありがとうございました。
Discussion