望月の息抜き

在宅勤務の息抜きです。主にプログラミングについて書いていきたいと思います。

【Python】【18】Pandasを利用してデータ分析をしてみよう③

【記事の目標】

Pandasを利用してデータ分析(表連結)してみよう。

 

【作業手順】

1.Pandasをインストール

2.Pandasをインポート

3.テストデータを作成して読み込もう

4.表を結合してみよう

5.同じ値のみを抽出してみよう

 

1.Pandasをインストール

以下記事の「1.」と「2.」の手順で実施しましょう。

【Python】【14】Pandasを利用して表を表示してみよう

 

2.Pandasをインポート

以下のようにインポートしましょう。

 import pandas as pd

これで、Pandasが利用できるようになりました。

 

3.テストデータを作成して読み込もう

今回は表結合に利用するデータを定義していきます。

以下のように、2つの表データを設定してみましょう。

f:id:fysker:20220129175439p:plain

f:id:fysker:20220129175455p:plain

1つ目のファイルを「blog_test_5.csv」、2つ目のファイルを「blog_test_6.csv」で保存しましょう。
私の場合は以下のように保存しています。

f:id:fysker:20220129175647p:plain

では、この2つのファイルを読み込みましょう。

 data1 = pd.read_csv('./csv/blog_test_5.csv', index_col='time')
data2 = pd.read_csv('./csv/blog_test_6.csv', index_col='time')

index_col を指定して読み込ませます。

 

4.表を結合してみよう

では、読み込んだデータ同士を結合してみましょう。

 concat_data = pd.concat([data1, data2])
print(concat_data)

結合する場合は、pandas の concat() を利用します。

concat() の引数に結合したい表を配列で渡すことで表を結合してくれます。

では、実行してみましょう。

f:id:fysker:20220129180131p:plain

2つの表が結合されていますね。

同じ列名の部分は綺麗に表示されていて、結合したときにデータが存在しない部分は NaN で表示されています。

 

5.同じ行のみを抽出してみよう

「3.」で作成した、「blog_test_6.csv」のデータを以下に書き換えましょう。

f:id:fysker:20220129181154p:plain

同じ行というのはインデックスが同じという意味になります。

なので、今回は time の列をインデックスに指定しているため、書き換えたことにより、どちらのファイルにも time が 3 の行が設定されていることになります。

では、修正したデータを読み込んで同じ行のみを抽出してみましょう。

 merge_data = pd.merge(data1, data2)
print(merge_data)

同じ行のみを抽出する場合は、pandas の merge() を利用します。

merge() の引数に2つのデータを渡すことで、同じ行を抽出してくれます。

では、実行してみましょう。

f:id:fysker:20220129181807p:plain

・「blog_test_5.csv」の time が 3 の num1 は 2 、num2 は 4、num3 は未定義

・「blog_test_6.csv」の time が 3 の num1 は未定義 、num2 は 4、num3 は 9

time が 3 のデータのみ抽出できていますね。

 

 

今回も引き続き Pandas を利用しています。

入り口部分の簡単なところだけ記事にしていますが、応用していくと様々な分析ができるようになっています。

【Python】【17】Pandasを利用してデータ分析をしてみよう②

【記事の目標】

Pandasを利用してデータ分析(差分抽出)してみよう。

 

【作業手順】

1.Pandasをインストール

2.Pandasをインポート

3.テストデータを作成して読み込もう

4.行の差分を取得してみよう

5.列の差分を取得してみよう

6.差分を取得したデータを表示する列を追加してみよう

 

1.Pandasをインストール

以下記事の「1.」と「2.」の手順で実施しましょう。

【Python】【14】Pandasを利用して表を表示してみよう

 

2.Pandasをインポート

以下のようにインポートしましょう。

 import pandas as pd

これで、Pandasが利用できるようになりました。

 

3.テストデータを作成して読み込もう

今回は差分取得に利用するデータを定義していきます。

以下のように、様々な数字を設定してみましょう。

f:id:fysker:20220129150738p:plain

このファイルを「blog_test_4.csv」で保存しましょう。
私の場合は以下のように保存しています。

f:id:fysker:20220129150833p:plain

では、このファイルを読み込みましょう。

 data = pd.read_csv('./csv/blog_test_4.csv', index_col='time')

index_col を指定して読み込ませます。

 

4.行の差分を取得してみよう

1行前との差分を取得してみましょう。

 print(data.diff())

読み込んだデータに対して diff() を実施することで、1行前の列との差分を取得できます。

では、実行してみましょう。

f:id:fysker:20220129151202p:plain

では結果を1つずつ見ていきましょう。

1行目の場合は、1行前のデータがないため、計算できずに NaN が表示されています。

2行目以降は、自分のデータと1行前のデータの差が表示されています。

例えば2行目の場合は、

 ・num1 は2行目のデータが 2 で、1行目のデータが 1 なので、2-1=1

 ・num2 は2行目のデータが 4 で、1行目のデータが 1 なので、4-1=3

という計算がされています。

 

5.列の差分を取得してみよう

次は、1列前との差分を取得してみましょう。

 print(data.diff(axis=1))

先ほど呼び出していた diff() というメソッドに引数として axis=1 を渡すことで1列前との差分が取得できます。

では、実行してみましょう。

f:id:fysker:20220129152530p:plain

では結果を1つずつ見ていきましょう。

1列目の場合は、1列前のデータがないため、計算できずに NaN が表示されています。

2列目は、自分のデータと1列前のデータの差が表示されています。

例えば3列目の場合は、

 ・num2 はデータが 9 で、num1 のデータが 4 なので、9-4=5

という計算がされています。

 

6.差分を取得したデータを表示する列を追加してみよう

「4.」と「5.」で差分を取得してきましたが、最終的に出力された値に元のデータがないと、分かり辛いですよね。

元のデータに差分を取得した列を追加してみましょう。

 data["diff_num1"] = data["num1"].diff()
print(data)

diff_num1 という列を新しく追加して、num1の列の1行前の差分を設定しています。

では、実行してみましょう。

f:id:fysker:20220129153551p:plain

diff_num1 という列が追加され、「4.」で確認していた num1 の差分と同じデータが表示されましたね。

 

【補足】

・2行前や2行後のデータ差分は取れないの?

2行前や2行後の差分は diff() メソッドに引数を渡すことで取得できます。

■2行前の場合

コード:

 print(data.diff(2))

実行結果:

f:id:fysker:20220129153834p:plain

■2行後の場合

コード:

 print(data.diff(-2))

実行結果:

f:id:fysker:20220129153904p:plain

 

このように、引数の数字を変えることで、好きなデータとの差分が取得できます。

 

 

今回も引き続き Pandas を利用しています。

差分の取得はデータ分析で結構利用されると思います。

Pandas を利用して、ネットから取得したデータを分析したりして見ても良いかもしれませんね。

【Python】【16】Pandasを利用してデータ分析をしてみよう①

【記事の目標】

Pandasを利用してデータ分析(計算)してみよう。

 

【作業手順】

1.Pandasをインストール

2.Pandasをインポート

3.テストデータを作成して読み込もう

4.列の合計を出してみよう

5.列の平均を出してみよう

6.列の中央値を出してみよう

7.列の最大値を出してみよう

8.列の最小値を出してみよう

9.列のデータ数を出してみよう

 

1.Pandasをインストール

以下記事の「1.」と「2.」の手順で実施しましょう。

【Python】【14】Pandasを利用して表を表示してみよう

 

2.Pandasをインポート

以下のようにインポートしましょう。

 import pandas as pd

これで、Pandasが利用できるようになりました。

 

3.テストデータを作成して読み込もう

今回は計算に利用するデータを定義していきます。

以下のように、ユーザごとのスコアを設定してみましょう。

f:id:fysker:20220127214637p:plain

このファイルを「blog_test_3.csv」で保存しましょう。
私の場合は以下のように保存しています。

f:id:fysker:20220127214744p:plain

では、このファイルを読み込みましょう。

 data = pd.read_csv('./csv/blog_test_3.csv', index_col='user')

index_col を指定して読み込ませます。

 

4.列の合計を出してみよう

ではまず、列の合計を出してみましょう。

 sumResult = data['score'].sum()
print('sumResult:', sumResult)

列の合計は、合計したい列名を指定して、sum()を実行します。

data['列名'] で合計したい列を指定しています。

では、実行してみましょう。

f:id:fysker:20220127215201p:plain

50+98+25+13+88=274

合っていますね。

 

5.列の平均を出してみよう

次は、列の平均を出してみましょう。

 meanResult = data['score'].mean()
print('meanResult:', meanResult)

列の平均は、平均値を出したい列名を指定して、mean()を実行します。

では、実行してみましょう。

f:id:fysker:20220127215500p:plain

274÷5=54.8

合っていますね。

 

6.列の中央値を出してみよう

次は、列の中央値を出してみましょう。

 medianResult = data['score'].median()
print('medianResult:', medianResult)

列の中央値は、中央値を出したい列名を指定して、median()を実行します。

では、実行してみましょう。

f:id:fysker:20220127215910p:plain

データは値の大きい順に 98, 88, 50, 25, 13 ですね。

真ん中の 50 が取得できているので、合っていますね。

 

7.列の最大値を出してみよう

次は、列の最大値を出してみましょう。

 maxResult = data['score'].max()
print('maxResult:', maxResult)

列の最大値は、最大値を出したい列名を指定して、max()を実行します。

では、実行してみましょう。

f:id:fysker:20220127220147p:plain

一番大きい値は 98 なので、合っていますね。

 

8.列の最小値を出してみよう

次は、列の最小値を出してみましょう。

 minResult = data['score'].min()
print('minResult:', minResult)

列の最小値は、最小値を出したい列名を指定して、min()を実行します。

では、実行してみましょう。

f:id:fysker:20220127220328p:plain

一番小さい値は 13 なので、合っていますね。

 

9.列のデータ数を出してみよう

最後に、列のデータ数を出してみましょう。

 countResult = data['score'].count()
print('countResult:', countResult)

列のデータ数は、データ数を出したい列名を指定して、count()を実行します。

では、実行してみましょう。

f:id:fysker:20220127220848p:plain

今回設定したデータ数は 5件 なので、合っていますね。

 

 

今回は少しステップが多かったですが、それぞれ簡単に書けて、すぐ実行できるので、楽しく実践できたのではないでしょうか。

Pandasはまだまだやれることがあるので、分割して記事にしようと思っています。

【Python】記事まとめ

Python関連のまとめ記事になります。

 

  • 環境構築

 

  • 標準ライブラリ

【Python】【5】Webページを取得してみよう

【Python】【8】map関数を使ってみよう

【Python】【9】filter関数を使ってみよう

【Python】【10】reduce関数を使ってみよう

【Python】【11】データベースを作ってみよう

【Python】【12】データを操作してみよう

【Python】【20】iniファイルのデータを読み書きしてみよう

 

  • 外部ライブラリ

【Python】【2】簡易GUI表示

【Python】【3】プログラムの実行ファイル化

【Python】【4】Kivyを使ってみよう

【Python】【6】HTMLを解析してみよう

【Python】【7】Webページを操作してみよう

【Python】【13】JSONを使ってみよう

【Python】【14】Pandasを利用して表を表示してみよう

【Python】【15】Pandasを利用してグラフを表示してみよう

【Python】【16】Pandasを利用してデータ分析をしてみよう①

【Python】【17】Pandasを利用してデータ分析をしてみよう②

【Python】【18】Pandasを利用してデータ分析をしてみよう③

【Python】【19】Tkinterを利用してみよう

 

  • 手書きロジック

【Python】【21】素因数分解してみよう①

【Python】【22】素因数分解してみよう②

 

【Python】【15】Pandasを利用してグラフを表示してみよう

【記事の目標】

Pandasを利用してグラフを表示してみよう。

 

【作業手順】

1.Pandasをインストール

2.matplotlibをインストール

3.Pandasとmatplotlibをインポート

4.テストデータを作成して読み込もう

5.表に表示したいデータを抽出しよう

6.表を表示してみよう

 

1.Pandasをインストール

以下記事の「1.」と「2.」の手順で実施しましょう。

【Python】【14】Pandasを利用して表を表示してみよう

 

2.matplotlibをインストール

まずは、自分の開発環境にmatplotlibをインストールしましょう。

ターミナルにて以下コマンドを実行しましょう。

 linuxの場合:pip install matplotlib
 windowsの場合:python -m pip install matplotlib

windowsの場合は「py -m」を先頭に付ける必要があるので注意です。

コマンド実行後にSuccessfully...と表示されれば完了です。

 

3.Pandasとmatplotlibをインポート

以下のようにインポートしましょう。

 import pandas as pd
from matplotlib import pyplot as plt

これで、Pandasとmatplotlibが利用できるようになりました。

 

4.テストデータを作成して読み込もう

今回はグラフとして表示するデータを定義していきます。

以下のように、日付ごとにサンプルの数字と温度を設定してみましょう。

f:id:fysker:20220124010306p:plain

このファイルを「blog_test_2.csv」で保存しましょう。

私の場合は以下のように保存しています。

f:id:fysker:20220124011103p:plain

では、このファイルを読み込みましょう。

 data = pd.read_csv('./csv/blog_test_2.csv', index_col='time')

今回は index_col を指定して読み込ませます。

 

5.表に表示したいデータを抽出しよう

「4.」で読み込んだデータから必要な行を抽出しましょう。

 df = data.iloc[:, [0, 1]]

「:」はすべての行を表します。

「[0, 1]」はindexとして指定した列を除いた2列を抽出します。

これで、 num と temperature の列が抽出され、変数 df に格納されました。

 

6.表を表示してみよう

最後に、表を表示してみましょう。

表を表示するためには、データをプロットして、表示させる必要があります。

 df.plot()
plt.title("test graph")
plt.show()

データをプロットして、グラフのタイトルを test graph に設定し、show()で表示します。

実行してみましょう。

f:id:fysker:20220124011713p:plain

CSVで設定した値がプロットされたグラフが表示されました。

 

【補足】

・「5.」で実施した抽出は意味があるの?

今回のデータの場合は、意味がありません。

なぜなら、一番最初に読み込んだ際に index を指定しているため、その時点でデータとして表示されるのは num と temperature の列に決まっているからです。

例えば、temperature だけ抽出して表示してみることも可能です。

「5.」の記載を以下に書き換えてみましょう。

 df = data.iloc[:, [1]]

[0, 1]を[1]に書き換えています。

これで実行してみましょう。

f:id:fysker:20220124012603p:plain

temperature だけ抽出できていますね。

もちろん、[0, 1]を[0]に書き換えると num だけのグラフが表示されますよ。

こちらはご自身で確認してみてください。

 

 

今回は、前回のPandasを利用したグラフの表示をやってみました。

少し難しかったのではないかと感じています。

私も実際に動かしてみないとイメージが湧かず、少し時間が掛かってしまいました。

こういった壁にぶつ狩ることは楽しいことですので、諦めずにチャレンジしていきましょう。

【Python】【14】Pandasを利用して表を表示してみよう

【記事の目標】

Pandasを利用して表を表示しよう。

CSVファイルを読み込んで、票を表示しよう。

 

【作業手順】

1.Pandasをインストール

2.Pandasをインポート

3.データを作成して表示してみよう

4.CSVファイルを読み込んで、データを表示してみよう

 

1.Pandasをインストール

まずは、自分の開発環境にPandasをインストールしましょう。

ターミナルにて以下コマンドを実行しましょう。

 linuxの場合:pip install pandas
 windowsの場合:python -m pip install pandas

windowsの場合は「py -m」を先頭に付ける必要があるので注意です。

コマンド実行後にSuccessfully...と表示されれば完了です。

 

私の場合はなぜかインストールが上手く行かなかったので、PyCharmの機能でインストールしました。

 import pandas as pd

と入力して、 pandas の部分に赤い波線が表示されるので、マウスカーソルを合わせるとpandasのインストールと出てくるので、その部分をクリックします。

これでバックグラウンドでインストールが開始されます。

 

2.Pandasをインポート

以下のようにインポートしましょう。

 import pandas as pd

これで、Pandasが利用できるようになりました。

 

3.データを作成して表示してみよう

以下のような簡単な表を作成してみましょう。

f:id:fysker:20220122215655p:plain

まず、このデータを作成してみましょう。

 df = pd.DataFrame({
'A': pd.Series([1, 2], index=['a', 'b']),
'B': pd.Series([3, 4], index=['a', 'b'])
})

df という変数に、表のデータを設定しました。

この表を出力してみましょう。

 print(df.head())

今回はデータを取得するための df.head() を利用します。

df.head() は先頭の5行を取得します。

では、実行してみましょう。

f:id:fysker:20220122223608p:plain

目標の表が表示されましたね。

 

4.CSVファイルを読み込んで、データを表示してみよう

先ほど記載していたコードは一度削除かコメントアウトしましょう。

まずはCSVファイルを作成しましょう。

下記の形で、blog_test_1.csv を作成しましょう。

f:id:fysker:20220122224257p:plain

私の場合はこちらに配置しました。

f:id:fysker:20220122225030p:plain

それでは、このファイルを読み込みます。

 df = pd.read_csv('./csv/blog_test_1.csv', sep=',')

df という変数に、CSVファイルのデータを設定しました。

この表を出力してみましょう。

 print(df.head())

では、実行してみましょう。

f:id:fysker:20220122225322p:plain

「3.」で設定したデータは左の値が自分で設定した "a" "b" という値でしたが、CSVファイルを読み込んだ場合は、 "0" "1" とindexで表示されていますね。

基本的には、「3.」の "a" "b" という値ではなく「4.」の "0" "1" の方を利用しますので、覚えておきましょう。

 

 

今回は、Pandasを利用してみました。

Excelのようにデータを管理して、表示、解析までできるライブラリのようです。

今回はデータの表示まで行いましたが、次回はもう少し深くPandasを利用していこうと思います。

【Python】【13】JSONを使ってみよう

【記事の目標】

JSONを使ってみる。

 

【作業手順】

1.jsonって何?

2.jsonをインポート

3.json文字列を定義しよう

4.json文字列から値を取得してみよう

 

1.jsonって何?

そもそもjsonって何?というところですが、

jsonとは、JavaScript Object Notationを短縮した名称です。

プログラムだけではなく、人間も読んだり作成することが容易になるように考えられたデータフォーマットです。

特定のプログラミング言語に依存せず使うことが出来ます。

 

2.jsonをインポート

今回はpythonの標準ライブラリのjsonを利用するため、インストールは不要です。

以下のように記載し、インポートしましょう。

 import json

これで、jsonが利用できるようになりました。

 

3.json文字列を定義しよう

例えば、以下のような形で定義してみます。

 testjson = '''
{
"text": "あいうえお",
"number": 12345,
"list": [
{
"listtext": "かきくけこ"
},
{
"listtext": "さしすせそ"
}
]
}
'''

textという文字列、numberという数値、listという配列を定義しています。

 

4.json文字列から値を取得してみよう

まずは、変数に「3.」で定義したjson文字列をjsonの形で設定しましょう。

 loadjson = json.loads(testjson)

これで、loadjsonという変数にtestjsonが設定されました。

まずは、textを取得してみましょう。

 print('text:' + loadjson['text'])

このコードで、loadjsonのtextを取得します。

実行してみましょう。

f:id:fysker:20220119215429p:plain

あいうえお が取得できましたね。

 

次に、numberを取得してみましょう。

 print('number:' + str(loadjson['number']))

先ほどのtextをnumberに書き換えて、文字列に変換するためにstr()を追加しています。

実行してみましょう。

※文字列に変換しない場合は、当記事の下にある【文字列以外を出力しようとした場合】に記載されている形でエラーが出力されます。

f:id:fysker:20220119220003p:plain

12345 が取得できましたね。

 

最後に、listを取得してみましょう。

先ほどまでと同じコードで出力してみましょう。

 print('list:' + str(loadjson['list']))

実行してみましょう。

f:id:fysker:20220119220223p:plain

listがそのまま出力されていますが、それぞれの値を出したいですよね。

以下のように繰り返し処理に変えてみましょう。

 for row in loadjson['list']:
print('listtext:' + row['listtext'])

実行してみましょう。

f:id:fysker:20220119220447p:plain

listの中のそれぞれの値が出力できましたね。

 

【文字列以外を出力しようとした場合】

数値のまま出力しようとすると、文字列しかだめだよとエラーが出力されます。

f:id:fysker:20220119215650p:plain

 

 

今回は、jsonを使ってみました。

REST APIであったり、画面からサーバへのRequestだったりと、最近はこの形が一番多いと思います。

解読もしやすく、少し書き方を覚えれば自身で作ったりもできますので、試してみてください。