Python §38 : pandas活用実践(データ加工:単位を分にしたり、時間にしたりする) | hitochan007のブログ(Pythonの勉強ブログ)

hitochan007のブログ(Pythonの勉強ブログ)

★Pythonの勉強記録を中心に●pomera DM200、●パソコン、●グルメ、●愛犬(トイプードル) などについてのブログです

過去の記事のリンク→【Python:目次】

■pandas活用実践(データ加工:単位を分にしたり、時間にしたりする)■
●1.新規のデータ列名を作成する(空の列データ)
●2.列名を設定して、データも同時に作成する
●3.列データをインデックスに適用したり、列名を変更する



●1.新規のデータ列名を作成する(空の列データ)


元の列名df.columnsは次のようになっています。

Index(['No', 'sec', 'x', 'sin(x)', 'cos(x)', 'tan(x)', 'x^2'], dtype='object')


dfというデータフレームの列名はdf.columnsで取得できます。さらにdf.columns.valuesにするとリストとして様々な処理が可能となります。ここでは、新しい列名を加える方法として、列名のリストに新しい列名をアペンドする方法を示します。

#新規のデータ列を追加
name_data=np.append(df.columns.values,['a'])
print(name_data)


data_nameの中身は以下のようにセットされます。

['No' 'sec' 'x' 'sin(x)' 'cos(x)' 'tan(x)' 'x^2' 'a']


reindex()メソッドを使うことで、列名をまるごと設定しなおすことができます。
(indexオプションを使えば、indexも設定できます)

df=df.reindex(columns=name_data)    #新しい列名を適用 reindex
print(df.columns)


最終的にdf.columnsは次のようになります。aという列名が加わっていることがわかります。
Index(['No', 'sec', 'x', 'sin(x)', 'cos(x)', 'tan(x)', 'x^2', 'a'], dtype='object')



●2.列名を設定して、データも同時に作成する

以下の例は、新しく列名を設定して、別のデータに演算を行いデータを生成しています。下記の例では、秒のデータを時間や分のデータに変換しています。

#列名を新たにデータとともに設定する
df['hr']=df['sec']/3600 #直接データを追加する
print(df)
df['min']=df['sec']/60 #直接データを追加する
print(df)



3.列データをインデックスに適用したり、列名を変更する


列データをインデックスにすることも簡単です。
#列データをインデックスに適用する
df.index=df['hr']
print(df)

#インデックスを列データに入力する
df['a']=df.index
print(df)







●インデックスの操作●
時系列のインデックスを利用する方法がわかり、列データの生成の仕方がわかり、列データをインデックスに適用する方法も理解しました。これでpandasを使いこなす基礎的な技術は習得できたと思います。

次からは実際にpandasでデータ解析をしたり、その結果をグラフ化していきたいと思います。

→ソースコードはこちら(プログラム名:Group1 G1d)





チェック df=df.reindex(columns=name_data) reindexメソッドでまるごと列名をセットする方法
チェック df['hr']=df['sec']/3600 列データを演算し、新たな列データに入力する方法
チェック df.index=df['hr'] インデックスに列データを使う方法
チェック df['a']=df.index インデックスデータを列データに入力する方法



【出力結果例:部分を表示しています】
コード
No   sec         x        sin(x)        cos(x)        tan(x)  \
hr
0.000000 0 0 -3.141593 -1.224647e-16 -1.000000e+00 1.224647e-16
0.016667 1 60 -2.879793 -2.588190e-01 -9.659258e-01 2.679492e-01
0.033333 2 120 -2.617994 -5.000000e-01 -8.660254e-01 5.773503e-01
0.050000 3 180 -2.356194 -7.071068e-01 -7.071068e-01 1.000000e+00
0.066667 4 240 -2.094395 -8.660254e-01 -5.000000e-01 1.732051e+00
0.083333 5 300 -1.832596 -9.659258e-01 -2.588190e-01 3.732051e+00
0.100000 6 360 -1.570796 -1.000000e+00 6.123234e-17 -1.633124e+16
0.116667 7 420 -1.308997 -9.659258e-01 2.588190e-01 -3.732051e+00
0.133333 8 480 -1.047198 -8.660254e-01 5.000000e-01 -1.732051e+00
0.150000 9 540 -0.785398 -7.071068e-01 7.071068e-01 -1.000000e+00
0.166667 10 600 -0.523599 -5.000000e-01 8.660254e-01 -5.773503e-01
0.183333 11 660 -0.261799 -2.588190e-01 9.659258e-01 -2.679492e-01
0.200000 12 720 0.000000 0.000000e+00 1.000000e+00 0.000000e+00
0.216667 13 780 0.261799 2.588190e-01 9.659258e-01 2.679492e-01
0.233333 14 840 0.523599 5.000000e-01 8.660254e-01 5.773503e-01
0.250000 15 900 0.785398 7.071068e-01 7.071068e-01 1.000000e+00
0.266667 16 960 1.047198 8.660254e-01 5.000000e-01 1.732051e+00
0.283333 17 1020 1.308997 9.659258e-01 2.588190e-01 3.732051e+00
0.300000 18 1080 1.570796 1.000000e+00 6.123234e-17 1.633124e+16
0.316667 19 1140 1.832596 9.659258e-01 -2.588190e-01 -3.732051e+00
0.333333 20 1200 2.094395 8.660254e-01 -5.000000e-01 -1.732051e+00
0.350000 21 1260 2.356194 7.071068e-01 -7.071068e-01 -1.000000e+00
0.366667 22 1320 2.617994 5.000000e-01 -8.660254e-01 -5.773503e-01
0.383333 23 1380 2.879793 2.588190e-01 -9.659258e-01 -2.679492e-01
0.400000 24 1440 3.141593 1.224647e-16 -1.000000e+00 -1.224647e-16







Python ブログランキングへ 
クリックしてね


新しいブログをはじめました。pythonの初級者から中級者まで、役に立つ記事を掲載していますので、ご覧ください。

特にカスタム関数(ユーザー定義関数)は、便利に使えると思います。

ぜひぜひこのリンクをクリックしてください 

 Pythonを勉強して株で儲けるブログ