pythonデータ洗浄ツール、方法、プロセス整理まとめ(一、データ洗浄の常用ツールnumpy,pandas)
文書ディレクトリ背景 2常用工具 2.1 numpy 2.2 pandas
1背景データ洗浄はデータ分析プロセス全体の第一歩であり、データ分析プロジェクト全体で最も時間がかかる一歩でもある. データ分析のプロセスは、データ分析の正確性を決定する.
2一般的なツール
2.1 numpy
2.2 pandas
seriesとdataframeの一般的な方法は以下の通りです.
メソッド名
説明
values
オブジェクトのすべての要素の値を返します.
index
ローインデックスを返す
dtypes
戻りタイプ
shape
オブジェクトデータ形状を返す
ndim
オブジェクトの次元を返します
size
オブジェクトの数を返します
columns
カラムラベルを返します(dataframeデータ構造のみ)
データ洗浄シリーズの文章をお読みください:pythonデータ洗浄ツール、方法、プロセス整理まとめ一、データ洗浄の常用工具——numpy,pandas 二、データ洗浄のファイル読み書き——csv、ExcelとMySQLデータ を読み取る三、データ洗浄のデータテーブル操作——データフィルタリング、削除の増加、修正の検索、データ整理と階層化インデックス 四、データ洗浄のデータ変換——日付フォーマットデータ処理、高次関数データ処理、文字列データ処理 .五、データ洗浄のデータ統計——データパケット演算、集約関数使用、パケットオブジェクトとapply関数、パースビューとクロステーブル 六、データ洗浄のデータ前処理(一)——重複値処理、欠落値処理 七、データ洗浄のデータ前処理(二)——異常値処理、データ離散化処理 .8、総括
1背景
2一般的なツール
2.1 numpy
numpy :
numpy ndarray
array , array( )
arange/linspace/zeros
import numpy as np
# array
arr1 = np.array([-7, 4, 4, 6, 89])
type(arr1)
numpy.ndarray
arr3 = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])#
arr3
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
np.arange(1,10,0.5)# arange
array([1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])
np.linspace(1,10,20,endpoint = True)# : , ,
array([ 1. , 1.47368421, 1.94736842, 2.42105263, 2.89473684,
3.36842105, 3.84210526, 4.31578947, 4.78947368, 5.26315789,
5.73684211, 6.21052632, 6.68421053, 7.15789474, 7.63157895,
8.10526316, 8.57894737, 9.05263158, 9.52631579, 10. ])
(10-1)/19
0.47368421052631576
np.zeros([4,5])# zeros
array([[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.]])
np.zeros(4)
array([0., 0., 0., 0.])
np.ones([2,3])# ones
array([[1., 1., 1.],
[1., 1., 1.]])
arr3 + 1# 1
array([[ 2, 3, 4, 5],
[ 6, 7, 8, 9],
[10, 11, 12, 13]])
arr3.ndim#
2
arr1.shape#
(5,)# :5
arr3.shape
(3, 4)# :3 4
arr3.size#
12
arr3.dtype#
dtype('int32')
#
data2 = ((1.2,2.3,3,4,5.6),(4.5,6.7,34,3.6,5),(2.5,4.6,7.8,8.9,50))#
data2
((1.2, 2.3, 3, 4, 5.6), (4.5, 6.7, 34, 3.6, 5), (2.5, 4.6, 7.8, 8.9, 50))
arr2 = np.array(data2)
arr2
array([[ 1.2, 2.3, 3. , 4. , 5.6],
[ 4.5, 6.7, 34. , 3.6, 5. ],
[ 2.5, 4.6, 7.8, 8.9, 50. ]])
arr2[0]#
array([1.2, 2.3, 3. , 4. , 5.6])
arr2[0:3]
array([[ 1.2, 2.3, 3. , 4. , 5.6],
[ 4.5, 6.7, 34. , 3.6, 5. ],
[ 2.5, 4.6, 7.8, 8.9, 50. ]])
arr2[1:3]
array([[ 4.5, 6.7, 34. , 3.6, 5. ],
[ 2.5, 4.6, 7.8, 8.9, 50. ]])
arr2[1,3]# ,
3.6
arr2[1][3]# ,
3.6
arr2[:,3]#
array([4. , 3.6, 8.9])
arr2[:,1:3]#
array([[ 2.3, 3. ],
[ 6.7, 34. ],
[ 4.6, 7.8]])
#
s = np.array([1,2,4,3,6,5,90,67,54,32,12,9,7])
np.sort(s)#
array([ 1, 2, 3, 4, 5, 6, 7, 9, 12, 32, 54, 67, 90])
s
array([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])
s = np.sort(s)
s
array([ 1, 2, 3, 4, 5, 6, 7, 9, 12, 32, 54, 67, 90])
sorted(s,reverse=True)
[90, 67, 54, 32, 12, 9, 7, 6, 5, 4, 3, 2, 1]
np.array(sorted(s,reverse=True))
array([90, 67, 54, 32, 12, 9, 7, 6, 5, 4, 3, 2, 1])
np.argsort(s)
array([ 0, 1, 3, 2, 5, 4, 12, 11, 10, 9, 8, 7, 6], dtype=int64)
s
array([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])
#
arr1 = np.array([[0,1,3,],[4,2,9],[4,5,9],[1,-3,4]])
np.sort(arr1,axis = 0)#axis=0 ;axis=1
array([[ 0, -3, 3],
[ 1, 1, 4],
[ 4, 2, 9],
[ 4, 5, 9]])
np.sort(arr1,axis = 1)#axis=0 ;axis=1
array([[ 0, 1, 3],
[ 2, 4, 9],
[ 4, 5, 9],
[-3, 1, 4]])
s
array([ 1, 2, 4, 3, 6, 5, 90, 67, 54, 32, 12, 9, 7])
np.where(s>7,1,-1)# 7 1, -1
array([-1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, -1])
np.where(s>7,s,-1)
array([-1, -1, -1, -1, -1, -1, 90, 67, 54, 32, 12, 9, -1])
np.where(s>7,1,-4)
array([-4, -4, -4, -4, -4, -4, 1, 1, 1, 1, 1, 1, -4])
np.extract(s>7,s)# s>7
array([90, 67, 54, 32, 12, 9])
2.2 pandas
# (series)
import pandas as pd
series1 = pd.Series([2.8,3.01,8.99,8.58,5.18])
series1
0 2.80
1 3.01
2 8.99
3 8.58
4 5.18
dtype: float64
type(series1)#
pandas.core.series.Series
series2 = pd.Series([2.8,3.01,8.99,8.58,5.18],index=['a','b','c','d','e'],name=' ')
series2
a 2.80
b 3.01
c 8.99
d 8.58
e 5.18
Name: , dtype: float64
series3 = pd.Series({' ':2.8,' ':3.01,' ':8.99,' ':9.73,' ':5.18})#
series3
2.80
3.01
8.99
9.73
5.18
dtype: float64
series3[0:3]#
2.80
3.01
8.99
dtype: float64
series3[' ':' ']#
2.80
3.01
8.99
9.73
dtype: float64
series1.values#
array([2.8 , 3.01, 8.99, 8.58, 5.18])
series3.index
Index([' ', ' ', ' ', ' ', ' '], dtype='object')
series1.index
RangeIndex(start=0, stop=5, step=1)
series1.dtype
dtype('float64')
dataframe
list1 = [[' ',23,' '],[' ',27,' '],[' ',26,' ']]#
df1 = pd.DataFrame(list1,columns=[' ',' ',' '])
df1.head(5)
0 23
1 27
2 26
df2 = pd.DataFrame({' ':[' ',' ',' '],' ':[23,24,26],' ':[' ',' ',' '],})#
df2.head(5)
0 23
1 24
2 26
array1 = np.array([[' ',23,' '],[' ',27,' '],[' ',26,' ']])
df3 = pd.DataFrame(array1,columns=[' ',' ',' '],index=['a','b','c'])#
df3
a 23
b 27
c 26
df3.values
array([[' ', '23', ' '],
[' ', '27', ' '],
[' ', '26', ' ']], dtype=object)
df3.index
Index(['a', 'b', 'c'], dtype='object')
df3.columns
Index([' ', ' ', ' '], dtype='object')
df3.columns.tolist()#
[' ', ' ', ' ']
df3.ndim
2
series1.ndim
1
df2.shape
(3, 3)
series1.shape
(5,)
df3.size
9
df3.dtypes
object
object
object
dtype: object
df2.dtypes
object
int64
object
dtype: object
seriesとdataframeの一般的な方法は以下の通りです.
メソッド名
説明
values
オブジェクトのすべての要素の値を返します.
index
ローインデックスを返す
dtypes
戻りタイプ
shape
オブジェクトデータ形状を返す
ndim
オブジェクトの次元を返します
size
オブジェクトの数を返します
columns
カラムラベルを返します(dataframeデータ構造のみ)
データ洗浄シリーズの文章をお読みください:pythonデータ洗浄ツール、方法、プロセス整理まとめ