Series
import pandas as pd
obj= pd. Series( [ 1 , 2 , - 3 , - 4 ] )
print ( obj)
0 1 1 2 2 -3 3 -4 dtype: int64
i= [ "a" , "c" , "d" , "a" ]
v= [ 2 , 4 , 5 , 7 ]
t= pd. Series( data= v, index= i, name= "col" )
print ( t)
a 2 c 4 d 5 a 7 Name: col, dtype: int64
val = [ 2 , 4 , 5 , 6 ]
idx1 = range ( 10 , 14 )
idx2 = "hello the cruel world" . split( )
s0 = pd. Series( val)
s1 = pd. Series( val, index = idx1)
t = pd. Series( val, index = idx2)
print ( s0)
0 2 1 4 2 5 3 6 dtype: int64
print ( s1)
10 2 11 4 12 5 13 6 dtype: int64
print ( t)
hello 2 the 4 cruel 5 world 6 dtype: int64
print ( s0. index)
RangeIndex(start=0, stop=4, step=1)
print ( s1. index)
RangeIndex(start=10, stop=14, step=1)
print ( t. index)
Index([‘hello’, ‘the’, ‘cruel’, ‘world’], dtype=‘object’)
print ( s0[ 0 ] )
2
print ( s1[ 10 ] )
2
print ( 'default:' , t[ 0 ] , 'label:' , t[ "hello" ] )
default: 2 label: 2
sdata = { 'Ohio' : 35000 , 'Texas' : 71000 , 'Oregon' : 16000 , 'Utah' : 5000 }
obj3 = pd. Series( sdata)
print ( obj3)
Ohio 35000 Texas 71000 Oregon 16000 Utah 5000 dtype: int64
通过字典创建
sdata = { "a" : 100 , "b" : 200 , "e" : 300 }
letter = [ "a" , "b" , "c" , "e" ]
obj = pd. Series( sdata, index = letter)
print ( obj)
a 100.0 b 200.0 c NaN e 300.0 dtype: float64
键值和指定的索引不匹配
sdata = { 'Ohio' : 35000 , 'Texas' : 71000 , 'Oregon' : 16000 , 'Utah' : 5000 }
obj1 = pd. Series( sdata)
states = [ 'California' , 'Ohio' , 'Oregon' , 'Texas' ]
obj2 = pd. Series( sdata, index = states)
print ( 'obj1:\n' , obj1)
print ( 'obj2:\n' , obj2)
obj1: Ohio 35000 Texas 71000 Oregon 16000 Utah 5000 dtype: int64 obj2: California NaN Ohio 35000.0 Oregon 16000.0 Texas 71000.0 dtype: float64
不同索引数据的自动对齐
print ( obj1+ obj2)
California NaN Ohio 70000.0 Oregon 32000.0 Texas 142000.0 Utah NaN dtype: float64
Series 索引的修改
obj = pd. Series( [ 4 , 7 , - 3 , 2 ] )
print ( "修改前:\n" , obj)
obj. index = [ 'Bob' , 'Steve' , 'Jeff' , 'Ryan' ]
print ( "修改后:\n" , obj)
修改前: 0 4 1 7 2 -3 3 2 dtype: int64 修改后: Bob 4 Steve 7 Jeff -3 Ryan 2 dtype: int64
dataFrame
dataFrame 的创建
data = {
'name' : [ '张三' , '李四' , '王五' , '小明' ] ,
'sex' : [ 'female' , 'female' , 'male' , 'male' ] ,
'year' : [ 2001 , 2001 , 2003 , 2002 ] ,
'city' : [ '北京' , '上海' , '广州' , '北京' ]
}
df= pd. DataFrame( data)
print ( df)
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
索引
df1= pd. DataFrame( data, columns= [ 'year' , 'name' , 'sex' , 'city' ] )
print ( df1)
. . year name sex city 0 2001 张三 female 北京 1 2001 李四 female 上海 2 2003 王五 male 广州 3 2002 小明 male 北京
缺失值
df2= pd. DataFrame( data, columns= [ 'year' , 'name' , 'sex' , 'city' , 'address' ] )
print ( df2)
. . year name sex city address 0 2001 张三 female 北京 NaN 1 2001 李四 female 上海 NaN 2 2003 王五 male 广州 NaN 3 2002 小明 male 北京 NaN
指定列名
df3= pd. DataFrame( data, columns= [ 'year' , 'name' , 'sex' , 'city' ] , index= [ 'a' , 'b' , 'c' , 'd' ] )
print ( df3)
. . year name sex city a 2001 张三 female 北京 b 2001 李四 female 上海 c 2003 王五 male 广州 d 2002 小明 male 北京
索引对象 属性
print ( df3)
print ( df3. index)
print ( df3. columns)
. . year name sex city a 2001 张三 female 北京 b 2001 李四 female 上海 c 2003 王五 male 广州 d 2002 小明 male 北京 Index([‘a’, ‘b’, ‘c’, ‘d’], dtype=‘object’) Index([‘year’, ‘name’, ‘sex’, ‘city’], dtype=‘object’)
print ( 'name' in df3. columns)
print ( 'a' in df3. index)
True True
print ( df3. shape)
(4, 4)
print ( df3. ndim)
2
print ( df3. size)
16
print ( df3. values)
[[2001 ‘张三’ ‘female’ ‘北京’] [2001 ‘李四’ ‘female’ ‘上海’] [2003 ‘王五’ ‘male’ ‘广州’] [2002 ‘小明’ ‘male’ ‘北京’]]
df
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
插入索引值
df. index
RangeIndex(start=0, stop=4, step=1)
df. index. insert( 1 , 'w' )
Index([0, ‘w’, 1, 2, 3], dtype=‘object’)
索引操作
重建索引
obj = pd. Series( [ 7.2 , - 4.3 , 4.5 , 3.6 ] , index = [ 'b' , 'a' , 'd' , 'c' ] )
print ( obj)
b 7.2 a -4.3 d 4.5 c 3.6 dtype: float64
obj. reindex( [ 'a' , 'b' , 'c' , 'd' , 'e' ] )
a -4.3 b 7.2 c 3.6 d 4.5 e NaN dtype: float64
obj. reindex( [ 'a' , 'b' , 'c' , 'd' , 'e' ] , fill_value= 4 )
a -4.3 b 7.2 c 3.6 d 4.5 e 4.0 dtype: float64
import numpy as np
obj1= pd. Series( [ 'blue' , 'red' , 'black' ] , index= [ 0 , 2 , 4 ] )
obj1
0 blue 2 red 4 black dtype: object
obj1. reindex( np. arange( 6 ) )
0 blue 1 NaN 2 red 3 NaN 4 black 5 NaN dtype: object
obj1. reindex( np. arange( 6 ) , method= 'ffill' )
0 blue 1 blue 2 red 3 red 4 black 5 black dtype: object
obj1. reindex( np. arange( 6 ) , method= 'bfill' )
0 blue 1 red 2 red 3 black 4 black 5 NaN dtype: object
df4= pd. DataFrame( np. arange( 9 ) . reshape( 3 , 3 ) , index= [ 'a' , 'c' , 'd' ] , columns= [ 'one' , 'two' , 'four' ] )
df4
print ( df4)
.one two four a 0 1 2 c 3 4 5 d 6 7 8
df4. reindex( index= [ 'a' , 'b' , 'c' , 'd' ] , columns= [ 'one' , 'two' , 'three' , 'four' ] )
one two three four a 0.0 1.0 NaN 2.0 b NaN NaN NaN NaN c 3.0 4.0 NaN 5.0 d 6.0 7.0 NaN 8.0
df4. reindex( index= [ 'a' , 'b' , 'c' , 'd' ] , columns= [ 'one' , 'two' , 'three' , 'four' ] , fill_value= 3 )
one two three four a 0 1 3 2 b 3 3 3 3 c 3 4 3 5 d 6 7 3 8
df4
df4. reindex( index= [ 'a' , 'b' , 'c' , 'd' ] , method= 'ffill' )
one two four a 0 1 2 b 0 1 2 c 3 4 5 d 6 7 8
df4. reindex( index= [ 'a' , 'b' , 'c' , 'd' ] , method= 'bfill' )
one two four a 0 1 2 b 3 4 5 c 3 4 5 d 6 7 8
df1
year name sex city 0 2001 张三 female 北京 1 2001 李四 female 上海 2 2003 王五 male 广州 3 2002 小明 male 北京
df5= df1. set_index( 'city' )
df5
year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df5. reset_index( )
city year name sex 0 北京 2001 张三 female 1 上海 2001 李四 female 2 广州 2003 王五 male 3 北京 2002 小明 male
df1
year name sex city 0 2001 张三 female 北京 1 2001 李四 female 上海 2 2003 王五 male 广州 3 2002 小明 male 北京
df5
year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df5[ [ 'name' , 'year' ] ]
name year city 北京 张三 2001 上海 李四 2001 广州 王五 2003 北京 小明 2002
display( df5. select_dtypes( exclude= 'int64' ) . head( ) )
name sex city 北京 张三 female 上海 李四 female 广州 王五 male 北京 小明 male
df5. select_dtypes( include= [ 'int64' ] ) . head( )
year city 北京 2001 上海 2001 广州 2003 北京 2002
df5. select_dtypes( include= [ 'int64' ] ) . head( 3 )
year city 北京 2001 上海 2001 广州 2003
df
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
df[ : 2 ]
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海
df[ 1 : 3 ]
name sex year city 1 李四 female 2001 上海 2 王五 male 2003 广州
df[ 1 : ]
name sex year city 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
df. head( 3 )
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州
df. head( )
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
df. tail( 3 )
name sex year city 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
df. sample( 3 )
name sex year city 2 王五 male 2003 广州 1 李四 female 2001 上海 3 小明 male 2002 北京
df. sample( frac= 0.8 )
name sex year city 0 张三 female 2001 北京 3 小明 male 2002 北京 1 李四 female 2001 上海
df5
year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df5. loc[ : , [ 'name' , 'year' ] ]
name year city 北京 张三 2001 上海 李四 2001 广州 王五 2003 北京 小明 2002
df5. loc[ [ '北京' , '上海' ] , [ 'name' , 'year' ] ]
name year city 北京 张三 2001 北京 小明 2002 上海 李四 2001
df5. loc[ df5[ 'year' ] <= 2002 , [ 'name' , 'year' ] ]
name year city 北京 张三 2001 上海 李四 2001 北京 小明 2002
df5
year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df5. iloc[ : , 2 ]
city 北京 female 上海 female 广州 male 北京 male Name: sex, dtype: object
df5. iloc[ [ 1 , 3 ] ]
year name sex city 上海 2001 李四 female 北京 2002 小明 male
df5. iloc[ [ 1 , 3 ] , : 2 ]
year name city 上海 2001 李四 北京 2002 小明
df5. iloc[ [ 1 , 3 ] , [ 0 , 2 ] ]
year sex city 上海 2001 female 北京 2002 male
df5
year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df5. query( 'year>2001' )
year name sex city 广州 2003 王五 male 北京 2002 小明 male
df5. query( 'year>2001 & year<2003' )
year name sex city 北京 2002 小明 male
df5[ df5[ 'year' ] == 2001 ]
year name sex city 北京 2001 张三 female 上海 2001 李四 female
df5. query( 'year==2001' )
year name sex city 北京 2001 张三 female 上海 2001 李四 female
df
data1 = { 'city' : '兰州' , 'name' : '李红' , 'year' : 2005 , 'sex' : 'female' }
df
name sex year city 0 张三 female 2001 北京 1 李四 female 2001 上海 2 王五 male 2003 广州 3 小明 male 2002 北京
df[ 'score' ] = [ 56 , 85 , 98 , 78 ]
df
name sex year city score 0 张三 female 2001 北京 56 1 李四 female 2001 上海 85 2 王五 male 2003 广州 98 3 小明 male 2002 北京 78
df. insert( 1 , 'No' , [ '001' , '002' , '003' , '004' ] )
df
name No sex year city score 0 张三 001 female 2001 北京 56 1 李四 002 female 2001 上海 85 2 王五 003 male 2003 广州 98 3 小明 004 male 2002 北京 78
print ( df5)
print ( df5. drop( '广州' ) )
print ( df5)
. year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male year name sex city 北京 2001 张三 female 上海 2001 李四 female 北京 2002 小明 male year name sex city 北京 2001 张三 female 上海 2001 李四 female 广州 2003 王五 male 北京 2002 小明 male
df[ 'year' ] = 2001
df
name No sex year city score 0 张三 001 female 2001 北京 56 1 李四 002 female 2001 上海 85 2 王五 003 male 2001 广州 98 3 小明 004 male 2001 北京 78
df. replace( '张三' , '李明' , inplace= True )
df
name No sex year city score 0 李明 001 female 2001 北京 56 1 李四 002 female 2001 上海 85 2 王五 003 male 2001 广州 98 3 小明 004 male 2001 北京 78
df. replace( { '李明' : '张山山' , '王五' : '小五' } , inplace= True )
df
name No sex year city score 0 张山山 001 female 2001 北京 56 1 李四 002 female 2001 上海 85 2 小五 003 male 2001 广州 98 3 小明 004 male 2001 北京 78
df. rename( columns= { 'No' : 'number' } , inplace= True )
df
name number sex year city score 0 张山山 001 female 2001 北京 56 1 李四 002 female 2001 上海 85 2 小五 003 male 2001 广州 98 3 小明 004 male 2001 北京 78