kharukaのブログ~お金と技術とキャリア~

Edu Fin~金融×教育~若いうちからお金について学ぶってだいじ!学んだテクノロジーはみんなの財産。過去、現在、将来の人生についてのブログ

【データサイセンス】pandas-データの並び替えと順番-

エンジニアスクールFLOC

入門 Python 3

入門 Python 3

前提条件

OS:Windows 10 64-bit, version 1607

Anaconda 4.4.0(Python 3.6 version 64-bit)インストール

NumPyのインストール

コマンドプロンプトでIPython Notebookを起動します。

ipython notebook

データの並び替えと順番

numpy、panadasとpandasからSeriesとDataFrameをインポートします。

import numpy as np
import pandas as pd
from pandas import Series,DataFrame

Seriesを作成します。

ser1=Series(range(5),index=['C','A','B','E','D'])
ser1

Out:

C    0
A    1
B    2
E    3
D    4
dtype: int32

indexでsortします。

ser1.sort_index()

Out:

A    1
B    2
C    0
D    4
E    3
dtype: int32

f:id:kharuka2016:20170808144920p:plain

sort_index()はser1を参照してsortしているだけなので、ser1は変更されていません。

ser1

Out:

C    0
A    1
B    2
E    3
D    4
dtype: int32

今度はorder()を使って値でsortしてみましょう。

ser1.order()

エラーが出たのでpandasのバージョンを確認してみます。

pd.__version__

Out:

'0.20.1'

version:0.20.3のドキュメントではありますが、order()というattributeが無いためエラーが出ているようです。

https://pandas.pydata.org/pandas-docs/stable/api.html#series

f:id:kharuka2016:20170808144924p:plain

order()の代わりにsort_values()を使えばうまくいきました。

ser1.sort_values()

Out:

C    0
A    1
B    2
E    3
D    4
dtype: int32

f:id:kharuka2016:20170808144928p:plain

randnを使ってSeriesを作成します。

from numpy.random import randn
ser2=Series(randn(10))
ser2

Out:

0   -1.528137
1   -0.254189
2   -0.980188
3   -1.362352
4    0.128021
5    0.644094
6   -0.596735
7   -1.711766
8    1.411017
9    0.921859
dtype: float64

f:id:kharuka2016:20170808144932p:plain

rank()を使うことで値が小さいものから順に番号を振ってくれます。

ser2.rank()

Out:

0     2.0
1     6.0
2     4.0
3     3.0
4     7.0
5     8.0
6     5.0
7     1.0
8    10.0
9     9.0
dtype: float64

sortもorder()同様使えないみたいなのです。

ser2.sort

f:id:kharuka2016:20170808144936p:plain

sort_values(inplace=True)を使うことで参照ではなく、実際にser2をsortしてくれます。

ser2.sort_values(inplace=True)
ser2

Out:

7   -1.711766
0   -1.528137
3   -1.362352
2   -0.980188
6   -0.596735
1   -0.254189
4    0.128021
5    0.644094
9    0.921859
8    1.411017
dtype: float64

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

参考

  • udemy 実践Pythonデータサイエンス

https://www.udemy.com/

Pythonスタートブック[増補改訂版]

Pythonスタートブック[増補改訂版]