數據清洗
import pandas as pd
import numpy as np
df = pd. DataFrame( np. random. randint( 10 , 100 , ( 10 , 3 ) ) , columns= list ( 'ABC' ) )
df. iloc[ 3 : 5 , 0 ] = np. nan
df. iloc[ 4 : 6 , 1 ] = np. nan
df. iloc[ 5 : 8 , 2 ] = np. nan
df. head( )
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
NaN
80.0
82.0
4
NaN
NaN
49.0
缺失值
isnull():判斷是缺失值
notnull():判斷不是缺失值
fillna():缺失值填充
dropna():刪除缺失值
缺失值判斷
df[ 'A' ] . isnull( )
0 False
1 False
2 False
3 True
4 True
5 False
6 False
7 False
8 False
9 False
Name: A, dtype: bool
df[ 'A' ] . notnull( )
0 True
1 True
2 True
3 False
4 False
5 True
6 True
7 True
8 True
9 True
Name: A, dtype: bool
df[ 'A' ] . isnull( ) . value_counts( )
False 8
True 2
Name: A, dtype: int64
df. info( )
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 3 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 A 8 non-null float64
1 B 8 non-null float64
2 C 7 non-null float64
dtypes: float64(3)
memory usage: 368.0 bytes
缺失值填充 丨★★
df. fillna( 0 )
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
0.0
80.0
82.0
4
0.0
0.0
49.0
5
44.0
0.0
0.0
6
61.0
86.0
0.0
7
25.0
17.0
0.0
8
53.0
51.0
84.0
9
44.0
36.0
54.0
df[ 'A' ] . fillna( 999 , inplace= True )
df
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
999.0
80.0
82.0
4
999.0
NaN
49.0
5
44.0
NaN
NaN
6
61.0
86.0
NaN
7
25.0
17.0
NaN
8
53.0
51.0
84.0
9
44.0
36.0
54.0
df[ 'B' ] . isnull( ) . value_counts( )
df[ 'B' ] . mean( )
59.0
df[ 'B' ] . fillna( df[ 'B' ] . mean( ) , inplace= True )
df
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
999.0
80.0
82.0
4
999.0
59.0
49.0
5
44.0
59.0
NaN
6
61.0
86.0
NaN
7
25.0
17.0
NaN
8
53.0
51.0
84.0
9
44.0
36.0
54.0
缺失值刪除 丨★★★
df. dropna( )
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
999.0
80.0
82.0
4
999.0
59.0
49.0
8
53.0
51.0
84.0
9
44.0
36.0
54.0
df. dropna( axis= 1 )
A
B
0
22.0
63.0
1
50.0
57.0
2
31.0
82.0
3
999.0
80.0
4
999.0
59.0
5
44.0
59.0
6
61.0
86.0
7
25.0
17.0
8
53.0
51.0
9
44.0
36.0
df. dropna( subset= [ "C" ] , inplace= True )
df
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
999.0
80.0
82.0
4
999.0
59.0
49.0
8
53.0
51.0
84.0
9
44.0
36.0
54.0
df. dropna( how= "all" )
df. dropna( thresh= 2 )
A
B
C
0
22.0
63.0
41.0
1
50.0
57.0
12.0
2
31.0
82.0
71.0
3
999.0
80.0
82.0
4
999.0
59.0
49.0
8
53.0
51.0
84.0
9
44.0
36.0
54.0
重複值
import pandas as pd
import numpy as np
np. random. seed( 10 )
df = pd. DataFrame( np. random. randint( 80 , 100 , ( 10 , 3 ) ) , columns= [ 'A' , 'B' , 'C' ] )
df
A
B
C
0
89
84
95
1
80
97
96
2
97
88
89
3
80
90
88
4
84
99
96
5
84
95
91
6
91
81
88
7
84
94
97
8
99
93
85
9
93
99
93
重複值判斷 丨★★
df[ df. duplicated( subset= 'A' , keep= False ) ]
A
B
C
1
80
97
96
3
80
90
88
4
84
99
96
5
84
95
91
7
84
94
97
df[ 'A' ] . duplicated( )
0 False
1 False
2 False
3 True
4 False
5 True
6 False
7 True
8 False
9 False
Name: A, dtype: bool
df[ 'A' ] . unique( )
array([89, 80, 97, 84, 91, 99, 93])
重複值刪除 丨★★★
df. drop_duplicates( 'A' , inplace= True )
df
A
B
C
0
89
84
95
1
80
97
96
2
97
88
89
4
84
99
96
6
91
81
88
8
99
93
85
9
93
99
93
df. drop_duplicates( subset= [ 'A' , 'B' ] , keep= 'first' , inplace= True )
df
A
B
C
0
89
84
95
1
80
97
96
2
97
88
89
4
84
99
96
6
91
81
88
8
99
93
85
9
93
99
93
數據替換
import pandas as pd
grades = [ 48 , 99 , 75 , 80 , 42 , 80 , 72 , 68 , 36 , 78 ]
df = pd. DataFrame( { 'ID' : [ "N2000%d" % r for r in range ( 10 ) ] ,
'性別' : [ 'F' , 'M' , 'F' , 'M' , 'F' , 'M' , 'F' , 'M' , 'M' , 'M' ] ,
'考試年份' : [ '2007' , '2007' , '2007' , '2008' , '2008' , '2008' , '2008' , '2009' , '2009' , '2009' ] ,
'科目' : [ '代數' , '統計' , '生物' , '代數' , '代數' , '統計' , '統計' , '代數' , '生物' , '生物' ] ,
'是否參加' : [ 'yes' , 'yes' , 'yes' , 'yes' , 'no' , 'yes' , 'yes' , 'yes' , 'yes' , 'yes' ] ,
'是否通過' : [ 'yes' if x > 50 else 'no' for x in grades] ,
'是否錄用' : [ True , True , True , False , False , False , False , True , True , False ] ,
'得分' : grades} )
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
F
2007
代數
yes
no
True
48
1
N20001
M
2007
統計
yes
yes
True
99
2
N20002
F
2007
生物
yes
yes
True
75
3
N20003
M
2008
代數
yes
yes
False
80
4
N20004
F
2008
代數
no
no
False
42
5
N20005
M
2008
統計
yes
yes
False
80
6
N20006
F
2008
統計
yes
yes
False
72
7
N20007
M
2009
代數
yes
yes
True
68
8
N20008
M
2009
生物
yes
no
True
36
9
N20009
M
2009
生物
yes
yes
False
78
一對一或者多對一替換 丨★★★
df[ '科目' ] . replace( [ '代數' , '統計' ] , '數學' , inplace= True )
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
F
2007
數學
yes
no
True
48
1
N20001
M
2007
數學
yes
yes
True
99
2
N20002
F
2007
生物
yes
yes
True
75
3
N20003
M
2008
數學
yes
yes
False
80
4
N20004
F
2008
數學
no
no
False
42
5
N20005
M
2008
數學
yes
yes
False
80
6
N20006
F
2008
數學
yes
yes
False
72
7
N20007
M
2009
數學
yes
yes
True
68
8
N20008
M
2009
生物
yes
no
True
36
9
N20009
M
2009
生物
yes
yes
False
78
多對多替換 丨★★★
df[ '是否參加' ] . replace( [ 'yes' , 'no' ] , [ '是' , '否' ] , inplace= True )
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
F
2007
數學
是
no
True
48
1
N20001
M
2007
數學
是
yes
True
99
2
N20002
F
2007
生物
是
yes
True
75
3
N20003
M
2008
數學
是
yes
False
80
4
N20004
F
2008
數學
否
no
False
42
5
N20005
M
2008
數學
是
yes
False
80
6
N20006
F
2008
數學
是
yes
False
72
7
N20007
M
2009
數學
是
yes
True
68
8
N20008
M
2009
生物
是
no
True
36
9
N20009
M
2009
生物
是
yes
False
78
map丨★★★
df[ '性別' ] = df[ '性別' ] . map ( lambda x: 'F' if x== 1 else 'M' )
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
M
2007
數學
是
no
True
48
1
N20001
M
2007
數學
是
yes
True
99
2
N20002
M
2007
生物
是
yes
True
75
3
N20003
M
2008
數學
是
yes
False
80
4
N20004
M
2008
數學
否
no
False
42
5
N20005
M
2008
數學
是
yes
False
80
6
N20006
M
2008
數學
是
yes
False
72
7
N20007
M
2009
數學
是
yes
True
68
8
N20008
M
2009
生物
是
no
True
36
9
N20009
M
2009
生物
是
yes
False
78
loc原地替換 丨★
df. loc[ df[ '是否通過' ] == 'yes' , '是否通過' ] = '是'
df. loc[ df[ '是否通過' ] == 'no' , '是否通過' ] = '否'
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
M
2007
數學
是
否
True
48
1
N20001
M
2007
數學
是
是
True
99
2
N20002
M
2007
生物
是
是
True
75
3
N20003
M
2008
數學
是
是
False
80
4
N20004
M
2008
數學
否
否
False
42
5
N20005
M
2008
數學
是
是
False
80
6
N20006
M
2008
數學
是
是
False
72
7
N20007
M
2009
數學
是
是
True
68
8
N20008
M
2009
生物
是
否
True
36
9
N20009
M
2009
生物
是
是
False
78
字典方式替換
df[ '性別' ] . replace( { 'F' : 1 , 'M' : 0 } , inplace= True )
df
ID
性別
考試年份
科目
是否參加
是否通過
是否錄用
得分
0
N20000
0
2007
數學
是
否
True
48
1
N20001
0
2007
數學
是
是
True
99
2
N20002
0
2007
生物
是
是
True
75
3
N20003
0
2008
數學
是
是
False
80
4
N20004
0
2008
數學
否
否
False
42
5
N20005
0
2008
數學
是
是
False
80
6
N20006
0
2008
數學
是
是
False
72
7
N20007
0
2009
數學
是
是
True
68
8
N20008
0
2009
生物
是
否
True
36
9
N20009
0
2009
生物
是
是
False
78
字符串處理
字符串拆分 丨str.split() 丨★★★
import pandas as pd
import numpy as np
s2 = pd. Series( [ 'a_b_c' , 'c_d_e' , np. nan, 'f_g_h' ] )
s3 = s2. str . split( '_' )
s3
0 [a, b, c]
1 [c, d, e]
2 NaN
3 [f, g, h]
dtype: object
s2. str . split( '_' ) . str . get( 1 )
0 b
1 d
2 NaN
3 g
dtype: object
s2. str . split( '_' ) . str [ 1 ]
0 b
1 d
2 NaN
3 g
dtype: object
s2. str . split( '_' , expand= True )
0
1
2
0
a
b
c
1
c
d
e
2
NaN
NaN
NaN
3
f
g
h
s2. str . split( '_' , expand= True , n= 1 )
0
1
0
a
b_c
1
c
d_e
2
NaN
NaN
3
f
g_h
去除空格 丨str.strip() 丨★★★
s1 = pd. Series( [ ' jack' , 'jill ' , ' jesse ' , 'frank' ] )
s1
0 jack
1 jill
2 jesse
3 frank
dtype: object
s1. str . strip( )
0 jack
1 jill
2 jesse
3 frank
dtype: object
s1. str . lstrip( )
0 jack
1 jill
2 jesse
3 frank
dtype: object
s1. str . rstrip( )
0 jack
1 jill
2 jesse
3 frank
dtype: object
df = pd. DataFrame( np. random. randn( 3 , 2 ) , columns= [ ' Column A ' , ' Column B ' ] , index= range ( 3 ) )
df
Column A
Column B
0
-1.254242
0.331579
1
-0.308600
-0.153735
2
0.678931
-1.913554
df. columns = df. columns. str . strip( ) . str . lower( ) . str . replace( ' ' , '_' )
df
column_a
column_b
0
-1.254242
0.331579
1
-0.308600
-0.153735
2
0.678931
-1.913554
轉換成小寫 丨str.lower()
s1. str . lower( )
0 jack
1 jill
2 jesse
3 frank
dtype: object
轉換成大寫 丨str.upper()
s1. str . upper( )
0 JACK
1 JILL
2 JESSE
3 FRANK
dtype: object
格式化
name = '張三'
area = '中國'
weight = 60
height = 170
print ( '姓名%s,來自%s,體重%i,身高%i' % ( name, area, weight, height) )
print ( '姓名%s,來自%s,體重%.2f,身高%.2f' % ( name, area, weight, height) )
姓名張三,來自中國,體重60,身高170
姓名張三,來自中國,體重60.00,身高170.00
刪除行列
import pandas as pd
import numpy as np
df = pd. DataFrame( np. random. normal( 10 , 2 , ( 4 , 4 ) ) , columns= [ 'A' , 'B' , 'C' , 'D' ] )
df
A
B
C
D
0
8.115084
6.508914
7.958109
9.675862
1
8.684058
10.844226
11.248047
11.003280
2
11.682869
6.719500
12.116010
9.816431
3
8.551931
9.199079
10.890649
11.919879
df. drop( 'A' , axis= 1 )
B
C
D
0
6.508914
7.958109
9.675862
1
10.844226
11.248047
11.003280
2
6.719500
12.116010
9.816431
3
9.199079
10.890649
11.919879
df. drop( 'A' , axis= 1 , inplace= True )
df. drop( 1 )
B
C
D
0
6.508914
7.958109
9.675862
2
6.719500
12.116010
9.816431
3
9.199079
10.890649
11.919879
更改列名 丨★★★
import pandas as pd
import numpy as np
df = pd. DataFrame( np. random. normal( 10 , 2 , ( 4 , 4 ) ) , columns= [ 'A' , 'B' , 'C' , 'D' ] )
df
A
B
C
D
0
7.307292
14.037799
12.164753
6.428564
1
9.455326
9.419263
13.312294
7.530863
2
7.884631
10.276828
9.828200
9.727539
3
7.725770
11.276272
9.016792
7.507430
df. columns= [ 'a' , 'b' , 'c' , 'd' ]
df
a
b
c
d
0
7.307292
14.037799
12.164753
6.428564
1
9.455326
9.419263
13.312294
7.530863
2
7.884631
10.276828
9.828200
9.727539
3
7.725770
11.276272
9.016792
7.507430
df. rename( columns = { 'a' : 'aa' } , inplace= True )
df
aa
b
c
d
0
7.307292
14.037799
12.164753
6.428564
1
9.455326
9.419263
13.312294
7.530863
2
7.884631
10.276828
9.828200
9.727539
3
7.725770
11.276272
9.016792
7.507430
改變列的格式 丨★★
import pandas as pd
import numpy as np
df = pd. DataFrame( np. random. rand( 5 , 3 ) , columns= [ 'A' , 'B' , 'C' ] )
df
A
B
C
0
0.224873
0.114649
0.583017
1
0.232641
0.556518
0.523811
2
0.350958
0.705332
0.820704
3
0.134563
0.604726
0.283148
4
0.506408
0.038460
0.332444
df[ 'A' ] = df[ 'A' ] . astype( 'str' )
df. dtypes
A object
B float64
C float64
dtype: object
df[ 'A' ] . sum ( )
'0.224872802469813340.232641062735879140.3509582237713720.134563003464316160.5064078198775632'
df[ 'B' ] . sum ( )
2.01968518853518
df[ 'B%' ] = df[ 'B' ] . apply ( lambda x: '%.2f%%' % ( x* 100 ) )
df
A
B
C
B%
0
0.22487280246981334
0.114649
0.583017
11.46%
1
0.23264106273587914
0.556518
0.523811
55.65%
2
0.350958223771372
0.705332
0.820704
70.53%
3
0.13456300346431616
0.604726
0.283148
60.47%
4
0.5064078198775632
0.038460
0.332444
3.85%
索引
設置索引丨set_index() 丨★
from faker import Faker
fake= Faker( locale= 'zh_CN' )
Faker. seed( 10000 )
import pandas as pd
import numpy as np
import random
random. seed( 10000 )
data = pd. DataFrame( )
for i in range ( 100 ) :
datai = pd. DataFrame( { '編號' : "N2020_%d" % ( i) ,
'姓名' : fake. name( ) ,
'性別' : np. random. choice( [ '男' , '女' ] ) ,
'省份' : fake. province( ) ,
'公司' : fake. company( ) ,
'身份證號' : fake. ssn( ) ,
'郵箱' : fake. safe_email( ) ,
'手機號' : fake. phone_number( ) ,
'年齡' : np. random. randint( 30 , 50 , 1 ) ,
'完成率' : np. random. random( ) ,
'日期' : fake. date_time( ) ,
'銷售' : fake. numerify( ) } ,
index = [ i] )
data = data. append( datai)
data. head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
3
N2020_3
王玉華
女
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
data1 = data. set_index( '省份' )
data1. head( )
編號
姓名
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
四川省
N2020_0
範金鳳
女
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
北京市
N2020_1
李平
男
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
福建省
N2020_2
李林
男
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
臺灣省
N2020_3
王玉華
女
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
天津市
N2020_4
趙平
女
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
data2 = data. set_index( [ '省份' , '姓名' ] )
data2. head( )
編號
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
姓名
四川省
範金鳳
N2020_0
女
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
北京市
李平
N2020_1
男
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
福建省
李林
N2020_2
男
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
臺灣省
王玉華
N2020_3
女
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
天津市
趙平
N2020_4
女
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
重置索引丨reset_index() 丨★
data1. reset_index( ) . head( )
省份
編號
姓名
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
四川省
N2020_0
範金鳳
女
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
1
北京市
N2020_1
李平
男
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
2
福建省
N2020_2
李林
男
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
3
臺灣省
N2020_3
王玉華
女
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
4
天津市
N2020_4
趙平
女
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
data2. reset_index( level= 1 ) . head( )
姓名
編號
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
四川省
範金鳳
N2020_0
女
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
北京市
李平
N2020_1
男
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
福建省
李林
N2020_2
男
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
臺灣省
王玉華
N2020_3
女
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
天津市
趙平
N2020_4
女
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
更新索引丨reindex() 丨★
data3 = data. head( )
data3
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
3
N2020_3
王玉華
女
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
data3. reindex( [ 2 , 3 , 0 , 1 , 4 ] , fill_value= 0 )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
43
0.495049
1992-05-08 23:04:30
835
3
N2020_3
王玉華
女
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
35
0.340037
1990-02-22 12:35:34
589
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
33
0.377441
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
43
0.064251
2009-11-25 07:11:24
616
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
41
0.578136
2013-12-02 20:31:27
922
索引排序丨sort_index()
data1. sort_index( ascending= False ) . head( )
編號
姓名
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
黑龍江省
N2020_75
劉鑫
女
超藝傳媒有限公司
210701194711181795
[email protected]
13228202589
47
0.974812
1974-12-29 11:36:42
155
黑龍江省
N2020_55
蔣文
男
惠派國際公司信息有限公司
52272619661221162X
[email protected]
18636530837
42
0.304991
1971-10-22 00:37:03
259
黑龍江省
N2020_18
鄭敏
男
彩虹信息有限公司
410200194702267611
[email protected]
15646946384
46
0.381412
1997-04-21 04:29:16
132
香港特別行政區
N2020_39
高潔
男
商軟冠聯信息有限公司
50011519990112238X
[email protected]
13209584706
34
0.017030
1999-07-18 21:25:45
699
香港特別行政區
N2020_19
梁雪
男
銀嘉科技有限公司
330825197106213864
[email protected]
13488583474
38
0.925357
1981-10-04 09:20:40
994
data2. sort_index( level= 1 , ascending= False ) . head( )
編號
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
姓名
臺灣省
黃燕
N2020_87
女
易動力傳媒有限公司
370829199012030735
[email protected]
13242323364
31
0.471365
1985-08-17 18:52:10
408
西藏自治區
黃峯
N2020_13
男
良諾科技有限公司
510801193903095981
[email protected]
15660156361
36
0.986889
2016-03-23 15:45:29
291
寧夏回族自治區
黃麗麗
N2020_11
女
華遠軟件傳媒有限公司
510114196409150161
[email protected]
18137834227
37
0.885827
1987-08-14 18:46:45
382
香港特別行政區
高潔
N2020_39
男
商軟冠聯信息有限公司
50011519990112238X
[email protected]
13209584706
34
0.017030
1999-07-18 21:25:45
699
江蘇省
馬彬
N2020_45
女
凌雲信息有限公司
36073319691231944X
[email protected]
13578076912
43
0.573776
1990-01-29 02:45:42
160
data2. sort_index( level= [ 0 , 1 ] , ascending= [ False , False ] ) . head( )
編號
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
省份
姓名
黑龍江省
鄭敏
N2020_18
男
彩虹信息有限公司
410200194702267611
[email protected]
15646946384
46
0.381412
1997-04-21 04:29:16
132
蔣文
N2020_55
男
惠派國際公司信息有限公司
52272619661221162X
[email protected]
18636530837
42
0.304991
1971-10-22 00:37:03
259
劉鑫
N2020_75
女
超藝傳媒有限公司
210701194711181795
[email protected]
13228202589
47
0.974812
1974-12-29 11:36:42
155
香港特別行政區
高潔
N2020_39
男
商軟冠聯信息有限公司
50011519990112238X
[email protected]
13209584706
34
0.017030
1999-07-18 21:25:45
699
梁雪
N2020_19
男
銀嘉科技有限公司
330825197106213864
[email protected]
13488583474
38
0.925357
1981-10-04 09:20:40
994
數據篩選
from faker import Faker
fake= Faker( locale= 'zh_CN' )
Faker. seed( 10000 )
import pandas as pd
import numpy as np
import random
random. seed( 10000 )
data = pd. DataFrame( )
for i in range ( 100 ) :
datai = pd. DataFrame( { '編號' : "N2020_%d" % ( i) ,
'姓名' : fake. name( ) ,
'性別' : np. random. choice( [ '男' , '女' ] ) ,
'省份' : fake. province( ) ,
'公司' : fake. company( ) ,
'身份證號' : fake. ssn( ) ,
'郵箱' : fake. safe_email( ) ,
'手機號' : fake. phone_number( ) ,
'年齡' : np. random. randint( 30 , 50 , 1 ) ,
'完成率' : np. random. random( ) ,
'日期' : fake. date_time( ) ,
'銷售' : fake. numerify( ) } ,
index = [ i] )
data = data. append( datai)
data. head( )
data. to_excel( 'C:/Users/users/Desktop/Python課件/課件編寫/data/p4_數據清洗2.xlsx' )
篩選列 丨★★
data[ '姓名' ] . head( 10 )
0 範金鳳
1 李平
2 李林
3 王玉華
4 趙平
5 陳桂花
6 韋亮
7 鍾瑜
8 劉桂花
9 劉桂花
Name: 姓名, dtype: object
data[ [ '姓名' , '省份' ] ] . head( 10 )
姓名
省份
0
範金鳳
四川省
1
李平
北京市
2
李林
福建省
3
王玉華
臺灣省
4
趙平
天津市
5
陳桂花
河南省
6
韋亮
福建省
7
鍾瑜
新疆維吾爾自治區
8
劉桂花
山東省
9
劉桂花
遼寧省
篩選行
data[ data[ '省份' ] == '北京市' ]
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
2009-11-25 07:11:24
616
23
N2020_23
李慧
女
北京市
巨奧信息有限公司
450223196310134685
[email protected]
18597786292
34
0.710752
1971-10-30 04:34:58
785
data[ ( data[ '性別' ] == '男' ) & ( data[ '省份' ] == '四川省' ) ]
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
29
N2020_29
溫雲
男
四川省
創匯傳媒有限公司
411621195006187174
[email protected]
15764016109
30
0.037330
1995-07-27 08:30:33
005
52
N2020_52
陳秀梅
男
四川省
艾提科信科技有限公司
621022196409096901
[email protected]
18797029868
36
0.735764
2014-02-16 02:19:28
005
56
N2020_56
徐豔
男
四川省
超藝網絡有限公司
230404195602088429
[email protected]
15730053639
36
0.285640
1977-07-27 07:27:07
782
71
N2020_71
韓鳳英
男
四川省
網新恆天網絡有限公司
152202194306033785
[email protected]
13699762247
39
0.089812
2019-06-26 04:44:02
760
根據內容精確匹配丨isin() 丨★★
data[ data[ '省份' ] . isin( [ '山東省' , '四川省' ] ) ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
8
N2020_8
劉桂花
男
山東省
恩悌網絡有限公司
230184197702140647
[email protected]
13310655117
34
0.516789
2015-09-29 16:21:28
439
29
N2020_29
溫雲
男
四川省
創匯傳媒有限公司
411621195006187174
[email protected]
15764016109
30
0.037330
1995-07-27 08:30:33
005
35
N2020_35
宋楠
男
山東省
恆聰百匯網絡有限公司
370213199602238217
[email protected]
13027921428
47
0.253179
1980-10-16 17:48:44
451
52
N2020_52
陳秀梅
男
四川省
艾提科信科技有限公司
621022196409096901
[email protected]
18797029868
36
0.735764
2014-02-16 02:19:28
005
data[ data[ '年齡' ] . isin( [ 35 , 36 , 38 ] ) ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
2013-12-02 20:31:27
922
5
N2020_5
陳桂花
女
河南省
華泰通安科技有限公司
51343219440729157X
[email protected]
15115129137
35
0.176635
2011-04-05 20:09:54
006
6
N2020_6
韋亮
女
福建省
合聯電子科技有限公司
610730195403213354
[email protected]
13680169513
36
0.713555
1988-09-08 02:15:10
769
7
N2020_7
鍾瑜
女
新疆維吾爾自治區
浙大萬朋傳媒有限公司
632823199206261862
[email protected]
15636503787
35
0.615502
2010-03-08 11:00:32
435
10
N2020_10
林秀蘭
男
吉林省
恩悌科技有限公司
532524196805192224
[email protected]
14522841055
38
0.535469
1970-02-01 06:55:39
602
根據內容模糊匹配丨str.contains() 丨★★
data[ data[ '公司' ] . str . contains( '動力' ) ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
21
N2020_21
方琳
男
青海省
易動力網絡有限公司
130481196911267803
[email protected]
14509729550
32
0.754724
2017-12-27 19:42:26
277
37
N2020_37
王梅
女
遼寧省
易動力科技有限公司
370812194801193481
[email protected]
18574736528
46
0.706331
1972-03-16 17:56:14
810
62
N2020_62
陳梅
女
四川省
易動力網絡有限公司
341126199909224292
[email protected]
13818527086
34
0.969633
1970-02-04 14:33:40
411
87
N2020_87
黃燕
女
臺灣省
易動力傳媒有限公司
370829199012030735
[email protected]
13242323364
44
0.975404
1985-08-17 18:52:10
408
94
N2020_94
餘建
女
西藏自治區
易動力網絡有限公司
500120197803071859
[email protected]
13304313249
32
0.055106
2008-05-29 04:44:57
194
data[ data[ '公司' ] . str . contains( '計算機|動力' ) ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
21
N2020_21
方琳
男
青海省
易動力網絡有限公司
130481196911267803
[email protected]
14509729550
32
0.754724
2017-12-27 19:42:26
277
37
N2020_37
王梅
女
遼寧省
易動力科技有限公司
370812194801193481
[email protected]
18574736528
46
0.706331
1972-03-16 17:56:14
810
62
N2020_62
陳梅
女
四川省
易動力網絡有限公司
341126199909224292
[email protected]
13818527086
34
0.969633
1970-02-04 14:33:40
411
70
N2020_70
徐濤
女
四川省
暉來計算機信息有限公司
441201195906202227
[email protected]
13422409521
36
0.353785
1994-04-02 12:23:33
743
87
N2020_87
黃燕
女
臺灣省
易動力傳媒有限公司
370829199012030735
[email protected]
13242323364
44
0.975404
1985-08-17 18:52:10
408
根據字符串長度 丨str.len()
s1. str . len ( )
0 5
1 5
2 7
3 5
dtype: int64
根據字符串形式 丨str.is*() 丨★★★
df = pd. DataFrame( { '值' : [ 'HELLO' , 'world' , 'China' , 'Python' , ' ' , '10' , 100 , '字符串' , 'data' , np. nan] } )
df
值
0
HELLO
1
world
2
China
3
Python
4
5
10
6
100
7
字符串
8
data
9
NaN
df[ '字符串數值或者字母' ] = df[ '值' ] . str . isalnum( )
df
值
字符串數值或者字母
0
HELLO
True
1
world
True
2
China
True
3
Python
True
4
False
5
10
True
6
100
NaN
7
字符串
True
8
data
True
9
NaN
NaN
df[ '字母' ] = df[ '值' ] . str . isalpha( )
df
值
字符串數值或者字母
字母
0
HELLO
True
True
1
world
True
True
2
China
True
True
3
Python
True
True
4
False
False
5
10
True
False
6
100
NaN
NaN
7
字符串
True
True
8
data
True
True
9
NaN
NaN
NaN
df[ '字符串數字' ] = df[ '值' ] . str . isdigit( )
df
值
字符串數值或者字母
字母
字符串數字
0
HELLO
True
True
False
1
world
True
True
False
2
China
True
True
False
3
Python
True
True
False
4
False
False
False
5
10
True
False
True
6
100
NaN
NaN
NaN
7
字符串
True
True
False
8
data
True
True
False
9
NaN
NaN
NaN
NaN
df[ '小寫字母' ] = df[ '值' ] . str . islower( )
df
值
字符串數值或者字母
字母
字符串數字
小寫字母
0
HELLO
True
True
False
False
1
world
True
True
False
True
2
China
True
True
False
False
3
Python
True
True
False
False
4
False
False
False
False
5
10
True
False
True
False
6
100
NaN
NaN
NaN
NaN
7
字符串
True
True
False
False
8
data
True
True
False
True
9
NaN
NaN
NaN
NaN
NaN
df[ '大寫字母' ] = df[ '值' ] . str . isupper( )
df
值
字符串數值或者字母
字母
字符串數字
小寫字母
大寫字母
0
HELLO
True
True
False
False
True
1
world
True
True
False
True
False
2
China
True
True
False
False
False
3
Python
True
True
False
False
False
4
False
False
False
False
False
5
10
True
False
True
False
False
6
100
NaN
NaN
NaN
NaN
NaN
7
字符串
True
True
False
False
False
8
data
True
True
False
True
False
9
NaN
NaN
NaN
NaN
NaN
NaN
df[ '首字母大寫' ] = df[ '值' ] . str . istitle( )
df
值
字符串數值或者字母
字母
字符串數字
小寫字母
大寫字母
首字母大寫
0
HELLO
True
True
False
False
True
False
1
world
True
True
False
True
False
False
2
China
True
True
False
False
False
True
3
Python
True
True
False
False
False
True
4
False
False
False
False
False
False
5
10
True
False
True
False
False
False
6
100
NaN
NaN
NaN
NaN
NaN
NaN
7
字符串
True
True
False
False
False
False
8
data
True
True
False
True
False
False
9
NaN
NaN
NaN
NaN
NaN
NaN
NaN
df[ '空格' ] = df[ '值' ] . str . isspace( )
df
值
字符串數值或者字母
字母
字符串數字
小寫字母
大寫字母
首字母大寫
空格
0
HELLO
True
True
False
False
True
False
False
1
world
True
True
False
True
False
False
False
2
China
True
True
False
False
False
True
False
3
Python
True
True
False
False
False
True
False
4
False
False
False
False
False
False
True
5
10
True
False
True
False
False
False
False
6
100
NaN
NaN
NaN
NaN
NaN
NaN
NaN
7
字符串
True
True
False
False
False
False
False
8
data
True
True
False
True
False
False
False
9
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
分組後篩選丨groupby() 丨★★
data. sort_values( by= '年齡' ) . groupby( '省份' , as_index= False ) . first( ) . head( )
省份
編號
姓名
性別
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
上海市
N2020_73
盧丹
女
盟新科技有限公司
370202194101232333
[email protected]
15682747497
35
0.691084
2019-10-02 12:23:51
761
1
雲南省
N2020_97
陳帥
男
商軟冠聯網絡有限公司
46902319400324717X
[email protected]
14529122727
37
0.635785
2007-05-29 09:35:04
564
2
內蒙古自治區
N2020_47
譚利
女
時刻網絡有限公司
140321194101147472
[email protected]
13363990254
32
0.910402
2011-11-03 00:34:49
373
3
北京市
N2020_23
李慧
女
巨奧信息有限公司
450223196310134685
[email protected]
18597786292
34
0.710752
1971-10-30 04:34:58
785
4
臺灣省
N2020_61
曹凱
女
南康科技有限公司
150502196806098191
[email protected]
13262601832
31
0.622077
1983-02-03 04:28:03
913
data. groupby( '省份' , as_index= False ) . apply ( lambda x: x[ x[ '完成率' ] > 0.95 ] ) . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
4
87
N2020_87
黃燕
女
臺灣省
易動力傳媒有限公司
370829199012030735
[email protected]
13242323364
44
0.975404
1985-08-17 18:52:10
408
5
33
N2020_33
馮璐
女
吉林省
太極科技有限公司
411381195107138515
[email protected]
13982410034
31
0.981835
2017-07-01 01:55:38
507
6
62
N2020_62
陳梅
女
四川省
易動力網絡有限公司
341126199909224292
[email protected]
13818527086
34
0.969633
1970-02-04 14:33:40
411
9
51
N2020_51
李偉
男
安徽省
商軟冠聯網絡有限公司
530701193409160440
[email protected]
15322916084
34
0.982004
2006-04-29 07:34:08
977
15
96
N2020_96
李淑華
女
江西省
襄樊地球村信息有限公司
542431194904214928
[email protected]
13447067886
31
0.966989
1977-11-06 19:40:07
529
loc()
data. loc[ data[ '省份' ] == '四川省' ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
29
N2020_29
溫雲
男
四川省
創匯傳媒有限公司
411621195006187174
[email protected]
15764016109
30
0.037330
1995-07-27 08:30:33
005
52
N2020_52
陳秀梅
男
四川省
艾提科信科技有限公司
621022196409096901
[email protected]
18797029868
36
0.735764
2014-02-16 02:19:28
005
56
N2020_56
徐豔
男
四川省
超藝網絡有限公司
230404195602088429
[email protected]
15730053639
36
0.285640
1977-07-27 07:27:07
782
62
N2020_62
陳梅
女
四川省
易動力網絡有限公司
341126199909224292
[email protected]
13818527086
34
0.969633
1970-02-04 14:33:40
411
data. loc[ data[ '年齡' ] > 35 ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
2009-11-25 07:11:24
616
3
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
1990-02-22 12:35:34
589
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
2013-12-02 20:31:27
922
6
N2020_6
韋亮
女
福建省
合聯電子科技有限公司
610730195403213354
[email protected]
13680169513
36
0.713555
1988-09-08 02:15:10
769
data. loc[ data[ '年齡' ] > 35 , [ '姓名' , '銷售' ] ] . head( )
姓名
銷售
0
範金鳳
488
1
李平
616
3
王玉華
589
4
趙平
922
6
韋亮
769
iloc()
data. iloc[ [ 2 , 3 , 5 ] , [ 0 , 1 , 2 ] ] . head( )
編號
姓名
性別
2
N2020_2
李林
男
3
N2020_3
王玉華
男
5
N2020_5
陳桂花
女
data. iloc[ 2 : , [ 0 , 1 , 2 ] ] . head( )
編號
姓名
性別
2
N2020_2
李林
男
3
N2020_3
王玉華
男
4
N2020_4
趙平
女
5
N2020_5
陳桂花
女
6
N2020_6
韋亮
女
data. iloc[ [ 2 , 3 , 5 ] , : ] . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
1992-05-08 23:04:30
835
3
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
1990-02-22 12:35:34
589
5
N2020_5
陳桂花
女
河南省
華泰通安科技有限公司
51343219440729157X
[email protected]
15115129137
35
0.176635
2011-04-05 20:09:54
006
數據排序
import pandas as pd
import numpy as np
df = pd. DataFrame( { 'animal' : 'cat dog cat fish dog cat cat' . split( ) ,
'size' : list ( 'SSMMMLL' ) ,
'weight' : [ 8 , 10 , 11 , 1 , 20 , 12 , 12 ] ,
'adult' : [ False ] * 5 + [ True ] * 2 } )
df
animal
size
weight
adult
0
cat
S
8
False
1
dog
S
10
False
2
cat
M
11
False
3
fish
M
1
False
4
dog
M
20
False
5
cat
L
12
True
6
cat
L
12
True
單個字段排序
df. sort_values( 'animal' )
df. sort_values( 'animal' , ascending= False )
animal
size
weight
adult
3
fish
M
1
False
1
dog
S
10
False
4
dog
M
20
False
0
cat
S
8
False
2
cat
M
11
False
5
cat
L
12
True
6
cat
L
12
True
多個字段排序
df. sort_values( [ 'animal' , 'weight' ] , ascending= [ True , False ] )
df. sort_values( [ 'animal' , 'weight' ] , ascending= False ) . head( )
animal
size
weight
adult
3
fish
M
1
False
4
dog
M
20
False
1
dog
S
10
False
5
cat
L
12
True
6
cat
L
12
True
日期數據
生成日期序列
import pandas as pd
dt1= pd. date_range( '2018-01-01' , periods= 10 , freq= 'D' )
dt1
DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
'2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08',
'2018-01-09', '2018-01-10'],
dtype='datetime64[ns]', freq='D')
dt2 = pd. period_range( '1/1/2018' , freq= 'D' , periods= 10 )
dt2
PeriodIndex(['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04',
'2018-01-05', '2018-01-06', '2018-01-07', '2018-01-08',
'2018-01-09', '2018-01-10'],
dtype='period[D]', freq='D')
設置爲日期格式丨★★★
import pandas as pd
import numpy as np
df = pd. DataFrame( { '日期' : [ '2020-3-1%i' % i for i in range ( 10 ) ] ,
'值' : np. random. randint( 80 , 100 , 10 ) } )
df. head( )
日期
值
0
2020-3-10
82
1
2020-3-11
92
2
2020-3-12
89
3
2020-3-13
83
4
2020-3-14
87
df. dtypes
日期 object
值 int32
dtype: object
df[ '日期_to_datetime' ] = pd. to_datetime( df[ '日期' ] )
df
日期
值
日期_to_datetime
0
2020-3-10
82
2020-03-10
1
2020-3-11
92
2020-03-11
2
2020-3-12
89
2020-03-12
3
2020-3-13
83
2020-03-13
4
2020-3-14
87
2020-03-14
5
2020-3-15
89
2020-03-15
6
2020-3-16
92
2020-03-16
7
2020-3-17
85
2020-03-17
8
2020-3-18
87
2020-03-18
9
2020-3-19
88
2020-03-19
from datetime import datetime
df[ '日期_strptime' ] = [ datetime. strptime( x, '%Y-%m-%d' ) for x in df[ '日期' ] ]
df[ '日期_strptime1' ] = df[ '日期' ] . apply ( lambda x: datetime. strptime( x, '%Y-%m-%d' ) )
df. head( )
日期
值
日期_to_datetime
日期_strptime
日期_strptime1
0
2020-3-10
82
2020-03-10
2020-03-10
2020-03-10
1
2020-3-11
92
2020-03-11
2020-03-11
2020-03-11
2
2020-3-12
89
2020-03-12
2020-03-12
2020-03-12
3
2020-3-13
83
2020-03-13
2020-03-13
2020-03-13
4
2020-3-14
87
2020-03-14
2020-03-14
2020-03-14
df. dtypes
日期 object
值 int32
日期_to_datetime datetime64[ns]
日期_strptime datetime64[ns]
日期_strptime1 datetime64[ns]
dtype: object
計算日期間隔
from faker import Faker
fake= Faker( locale= 'zh_CN' )
Faker. seed( 10000 )
import pandas as pd
import numpy as np
np. random. seed( 10000 )
data = pd. DataFrame( )
for i in range ( 10 ) :
datai = pd. DataFrame( { '日期1' : fake. date_time( ) ,
'日期2' : fake. date_time( ) } ,
index = [ i] )
data = data. append( datai)
data. head( )
日期1
日期2
0
2009-04-30 04:12:39
1990-04-20 10:50:04
1
1972-06-24 22:03:04
2016-12-18 11:20:24
2
1978-02-20 20:28:27
2018-02-10 03:32:35
3
1971-09-20 13:10:15
2014-06-06 21:00:06
4
2012-09-25 11:13:48
1970-03-09 07:51:55
data[ '間隔' ] = data[ '日期1' ] - data[ '日期2' ]
data[ '間隔' ] = data[ '間隔' ] . apply ( lambda x: x. days)
data
日期1
日期2
間隔
0
2009-04-30 04:12:39
1990-04-20 10:50:04
6949
1
1972-06-24 22:03:04
2016-12-18 11:20:24
-16248
2
1978-02-20 20:28:27
2018-02-10 03:32:35
-14600
3
1971-09-20 13:10:15
2014-06-06 21:00:06
-15601
4
2012-09-25 11:13:48
1970-03-09 07:51:55
15541
5
1987-10-02 22:19:30
2004-05-07 06:11:36
-6062
6
1992-03-10 12:30:02
1981-12-14 19:46:38
3738
7
1977-02-15 06:07:52
2016-03-19 14:59:26
-14278
8
2008-10-18 14:07:05
1995-07-18 02:32:49
4841
9
1970-05-28 23:34:24
1990-11-12 11:48:09
-7473
data[ '間隔_re' ] = list ( map ( lambda x: x. days, pd. to_datetime( 'today' ) - data[ '日期1' ] ) )
data. head( )
日期1
日期2
間隔
間隔_re
0
2009-04-30 04:12:39
1990-04-20 10:50:04
6949
3978
1
1972-06-24 22:03:04
2016-12-18 11:20:24
-16248
17436
2
1978-02-20 20:28:27
2018-02-10 03:32:35
-14600
15369
3
1971-09-20 13:10:15
2014-06-06 21:00:06
-15601
17714
4
2012-09-25 11:13:48
1970-03-09 07:51:55
15541
2734
格式化丨datetime.strftime() 丨★
import pandas as pd
import numpy as np
data = pd. read_excel( 'C:/Users/users/Desktop/Python課件/課件編寫/data/p4_數據清洗2.xlsx' , index_col= 0 )
data. head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
2009-11-25 07:11:24
616
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
1992-05-08 23:04:30
835
3
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
1990-02-22 12:35:34
589
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
2013-12-02 20:31:27
922
from datetime import datetime
data[ '日期_re' ] = [ datetime. strftime( x, '%Y-%m-%d' ) for x in data[ '日期' ] ]
data. head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
日期_re
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
2009-06-28
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
2009-11-25 07:11:24
616
2009-11-25
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
1992-05-08 23:04:30
835
1992-05-08
3
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
1990-02-22 12:35:34
589
1990-02-22
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
2013-12-02 20:31:27
922
2013-12-02
data. dtypes
編號 object
姓名 object
性別 object
省份 object
公司 object
身份證號 object
郵箱 object
手機號 int64
年齡 int64
完成率 float64
日期 datetime64[ns]
銷售 int64
日期_re object
dtype: object
日期索引丨set_index()
import pandas as pd
import numpy as np
data = pd. read_excel( 'C:/Users/users/Desktop/Python課件/課件編寫/data/p4_數據清洗2.xlsx' , index_col= 0 )
data. head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
日期
銷售
0
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
2009-06-28 16:36:39
488
1
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
2009-11-25 07:11:24
616
2
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
1992-05-08 23:04:30
835
3
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
1990-02-22 12:35:34
589
4
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
2013-12-02 20:31:27
922
data. set_index( '日期' , inplace= True )
data. head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
日期
2009-06-28 16:36:39
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
488
2009-11-25 07:11:24
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
616
1992-05-08 23:04:30
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
835
1990-02-22 12:35:34
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
589
2013-12-02 20:31:27
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
922
日期篩選 丨★★★
data[ '2019' ]
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
日期
2019-07-16 12:20:13
N2020_22
陸巖
男
浙江省
畢博誠科技有限公司
542522198007113665
[email protected]
14576069728
38
0.566517
262
2019-12-30 06:36:17
N2020_36
伍榮
男
廣西壯族自治區
富罳網絡有限公司
230882197007262293
[email protected]
18200579436
46
0.773116
674
2019-11-13 07:39:06
N2020_57
劉紅梅
男
寧夏回族自治區
華成育卓網絡有限公司
431102193803033408
[email protected]
13235351585
36
0.368342
436
2019-06-26 04:44:02
N2020_71
韓鳳英
男
四川省
網新恆天網絡有限公司
152202194306033785
[email protected]
13699762247
39
0.089812
760
2019-10-02 12:23:51
N2020_73
盧丹
女
上海市
盟新科技有限公司
370202194101232333
[email protected]
15682747497
35
0.691084
761
data[ '2019-11' ]
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
日期
2019-11-13 07:39:06
N2020_57
劉紅梅
男
寧夏回族自治區
華成育卓網絡有限公司
431102193803033408
[email protected]
13235351585
36
0.368342
436
data[ '2019-11-01' : '2019-11-20' ]
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
日期
2019-11-13 07:39:06
N2020_57
劉紅梅
男
寧夏回族自治區
華成育卓網絡有限公司
431102193803033408
[email protected]
13235351585
36
0.368342
436
改變日期數據頻率丨to_period()
data. to_period( 'M' ) . head( )
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
日期
2009-06
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
488
2009-11
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
616
1992-05
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
835
1990-02
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
589
2013-12
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
922
data. to_period( 'Y' ) . reset_index( ) . head( )
日期
編號
姓名
性別
省份
公司
身份證號
郵箱
手機號
年齡
完成率
銷售
0
2009
N2020_0
範金鳳
女
四川省
方正科技信息有限公司
320401200112288520
[email protected]
13104093059
41
0.700930
488
1
2009
N2020_1
李平
男
北京市
東方峻景科技有限公司
623001196812267643
[email protected]
14558214788
46
0.057950
616
2
1992
N2020_2
李林
男
福建省
昊嘉傳媒有限公司
131000193309129587
[email protected]
15872567938
31
0.648331
835
3
1990
N2020_3
王玉華
男
臺灣省
商軟冠聯網絡有限公司
340822198708022149
[email protected]
18651489092
49
0.449515
589
4
2013
N2020_4
趙平
女
天津市
商軟冠聯傳媒有限公司
33070219791019772X
[email protected]
18027050254
38
0.160348
922
本節重點
缺失值填充
缺失值刪除:subset參數
重複值刪除:subset參數
更改列名:columns參數
替換
排序