1 はじめに
NumPyは配列計算を行うライブラリです。ベクトル、行列演算を行うことができます。
ここでは、NumPyのloadtxt関数の使い方について説明します。
2 環境
VMware Workstation 15 Playerで作成した仮想マシン(1台)を使用しました。
CentOSの版数は下記のとおりです。
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
カーネルの版数は下記のとおりです。
[root@server ~]# uname -r
4.18.0-240.el8.x86_64
3 Anacondaのインストール
ここでは、Anacondaをインストールして、Anacondaの仮想環境で各種動作確認をしました。
DockerやKubernetesのように、既存の環境に影響を与えることなくライブラリのインストール、
削除ができるので便利だと思います。
Anacondaのインストール方法は、Anacondaのインストール方法を参照してください。
4 事前準備
Anacondaの仮想環境で、テスト用のcsvファイルを作成します。
1列目が月、2列目が月の最高気温を表しています。
(base) [root@server ~]# cat data.csv
1,10
2,11
3,15
4,18
5,20
6,25
7,32
8,35
9,30
10,25
11,20
12,10
5 loadtxt関数の使い方
loadtxt関数のパラメータは、以下のとおりです。
numpy.loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None, *, like=None)
5.1 delimiterの使い方
delimiter
でデリミッターを指定します。デフォルトは空白です。
ここで使用するテスト用ファイルは、デリミッターとして,
を使用しているので、
delimiter
には、,
を指定します。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv',delimiter=',')
print(data)
(base) [root@server ~]# python3 tp.py
[[ 1. 10.]
[ 2. 11.]
[ 3. 15.]
[ 4. 18.]
[ 5. 20.]
[ 6. 25.]
[ 7. 32.]
[ 8. 35.]
[ 9. 30.]
[10. 25.]
[11. 20.]
[12. 10.]]
5.2 dtypeの使い方
dtype
は、データ型を指定します。
デフォルトはfloat
型です。ここでは、配列に格納するデータをint
型に変換してみます。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv',delimiter=',',dtype=int)
print(data)
配列に格納された数がint
型になっていることがわかります。
(base) [root@server ~]# python3 tp.py
[[ 1 10]
[ 2 11]
[ 3 15]
[ 4 18]
[ 5 20]
[ 6 25]
[ 7 32]
[ 8 35]
[ 9 30]
[10 25]
[11 20]
[12 10]]
5.3 skiprowsの使い方
skiprows
は、skiprows
で指定する行数を読み飛ばすパラメータです。
ここでは、最初の5行を読み飛ばしてみます。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv',delimiter=',',skiprows=5)
print(data)
最初の5行が読み飛ばされていることがわかります。
(base) [root@server ~]# python3 tp.py
[[ 6. 25.]
[ 7. 32.]
[ 8. 35.]
[ 9. 30.]
[10. 25.]
[11. 20.]
[12. 10.]]
5.4 usecolsの使い方
usecols
は、使用する列を指定するパラメータです。
0列目(月)を表示するスクリプトを作成します。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv',delimiter=',',usecols=(0))
print(data)
0列目の月の列だけが表示されたことがわかります。
(base) [root@server ~]# python3 tp.py
[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.]
次に、0列名、1列目を表示するスクリプトを作成します。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv',delimiter=',',usecols=(0,1))
print(data)
(base) [root@server ~]# python3 tp.py
[[ 1. 10.]
[ 2. 11.]
[ 3. 15.]
[ 4. 18.]
[ 5. 20.]
[ 6. 25.]
[ 7. 32.]
[ 8. 35.]
[ 9. 30.]
[10. 25.]
[11. 20.]
[12. 10.]]
5.5 unpackの使い方
unpack
は、配列を転置するためのパラメータです。
転置とは行と列を入れかえることです。
unpack=True
とすることで、転置が行われます。
(base) [root@server ~]# cat tp.py
import numpy as np
data = np.loadtxt('data.csv', delimiter=',', unpack=True)
print(data)
デフォルトだと12行2列の行列ですが、unpack=True
と指定したことで
2行12列に変換されたことがわかります。
(base) [root@server ~]# python3 tp.py
[[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.]
[10. 11. 15. 18. 20. 25. 32. 35. 30. 25. 20. 10.]]
6 Matplotlibによるグラフ化
6.1 棒グラフの作成方法
Matplotlibを使って、月の最高気温のデータを棒グラフで表してみます。
サンプルコードは、以下のとおりです。
(base) [root@server ~]# cat tp.py
import numpy as np
import matplotlib.pyplot as plt
month, temp = np.loadtxt('data.csv', delimiter=',', unpack=True)
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(month, temp)
サンプルコードが読み込むデータは以下のとおりです。
(base) [root@server ~]# cat data.csv
1,10
2,11
3,15
4,18
5,20
6,25
7,32
8,35
9,30
10,25
11,20
12,10
6.2 積み上げ棒グラフの作成方法
名前とテスト(国語、算数、理科)の合計得点を積み上げ棒グラフで表示してみます。
ソースコードは以下になります。
import numpy as np
import matplotlib.pyplot as plt
name = ['kato', 'suzuki', 'tanaka']
kokugo = np.array([90, 40, 10])
sansu = np.array([10, 20, 90])
rika = np.array([30, 30, 80])
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.bar(name, kokugo, label='kokugo')
ax.bar(name, sansu, bottom = kokugo, label='sansu')
ax.bar(name, rika, bottom = kokugo + sansu, label='rika')
ax.legend()
plt.show()
Z 参考情報
Z.1 ネット情報
NumPy
numpy.loadtxt
Using NumPy's loadtxt method
PandasとNumPyの違いと使い分け方