pandas
功能: 1.表格数据的操作:【增删改查】 2.实现多个表格的处理 3.数据清洗操作:缺失值,重复值,异常值,数据标准化,数据转换的操作 4.实现excel的特殊操作:生成透视表,交叉表 5.完成统计分析
一、构建dataframe
import pandas as pd
import numpy as np
df = pd. DataFrame( data = [ [ 'zs' , 20 , '男' , '一' ] , [ 'lihua' , 18 , '女' , '二' ] , [ 'lisi' , 21 , '男' , '三' ] ] ,
index= [ 'a' , 'b' , 'c' ] ,
columns = [ 'name' , 'age' , 'gender' , 'class' ] )
print ( df)
name age gender class
a zs 20 男 一
b lihua 18 女 二
c lisi 21 男 三
df2 = pd. DataFrame( data = { 'name' : [ 'wu' , 'maliu' , 'ss' ] ,
'age' : [ 19 , 18 , 22 ] ,
'gender' : [ '男' , '女' , '男' ] ,
'class' : [ '三' , '一' , '二' ] } )
print ( df2)
name age gender class
0 wu 19 男 三
1 maliu 18 女 一
2 ss 22 男 二
二、dataframe属性
print ( 'df结构:\n' , df. shape)
print ( 'df维度:\n' , df. ndim)
print ( 'df元素个数:\n' , df. size)
print ( 'df数据类型:\n' , df. dtypes)
print ( 'df的列索引:\n' , df. index)
print ( 'df的列索引:\n' , df. columns)
print ( 'df的元素:\n' , type ( df. values) )
df结构:
(3, 4)
df维度:
2
df元素个数:
12
df数据类型:
name object
age int64
gender object
class object
dtype: object
df的列索引:
Index(['a', 'b', 'c'], dtype='object')
df的列索引:
Index(['name', 'age', 'gender', 'class'], dtype='object')
df的元素:
<class 'numpy.ndarray'>
三、dataframe的增删改查
(一)、dataframe的查询
ser = df[ 'name' ]
print ( type ( ser) )
print ( ser)
<class 'pandas.core.series.Series'>
a zs
b lihua
c lisi
Name: name, dtype: object
df[ [ 'name' , 'age' ] ] [ : 2 ]
print ( df. loc[ 'a' , : ] )
print ( df. loc[ 'a' , 'name' ] )
print ( df. loc[ [ 'a' , 'b' ] , [ 'name' , 'age' ] ] )
name zs
age 20
gender 男
class 一
Name: a, dtype: object
zs
name age
a zs 20
b lihua 18
mask1 = df[ 'age' ] > 18
mask2 = df[ 'gender' ] == '女'
mask = mask1& mask2
print ( mask)
df. loc[ mask, [ 'name' , 'gender' ] ]
a False
b False
c False
dtype: bool
df. iloc[ : , 1 ]
a 20
b 18
c 21
Name: age, dtype: int64
df. iloc[ - 1 , : ]
name lisi
age 21
gender 男
class 三
Name: c, dtype: object
df. iloc[ - 1 , : ] . index
Index(['name', 'age', 'gender', 'class'], dtype='object')
(二)、dataframe的增加方法
df[ 'address' ] = [ '北京' , '上海' , '南京' ]
print ( df)
name age gender class address
a zs 20 男 一 北京
b lihua 18 女 二 上海
c lisi 21 男 三 南京
df3 = df. append( df2, ignore_index= True )
print ( df3)
address age class gender name
0 北京 20 一 男 zs
1 上海 18 二 女 lihua
2 南京 21 三 男 lisi
3 NaN 19 三 男 wu
4 NaN 18 一 女 maliu
5 NaN 22 二 男 ss
(三)、dataframe的删除方法
df. drop( labels= [ 'address' ] , axis= 1 )
name age gender class a zs 20 男 一 b lihua 18 女 二 c lisi 21 男 三
df3. drop( labels= [ 0 , 1 , 2 ] , axis= 0 , inplace= False )
address age class gender name 3 NaN 19 三 男 wu 4 NaN 18 一 女 maliu 5 NaN 22 二 男 ss
(四)、dataframe的修改方法
print ( df)
name age gender class address
a zs 20 男 一 北京
b lihua 18 女 二 上海
c lisi 21 男 三 南京
df. loc[ df[ 'name' ] == 'zs' , 'class' ] = '有问题'
print ( df)
name age gender class address
a zs 20 男 有问题 北京
b lihua 18 女 二 上海
c lisi 21 男 三 南京
三、统计分析方法
np. ptp( df[ 'age' ] )
3
print ( df3)
address age class gender name
0 北京 20 一 男 zs
1 上海 18 二 女 lihua
2 南京 21 三 男 lisi
3 NaN 19 三 男 wu
4 NaN 18 一 女 maliu
5 NaN 22 二 男 ss
df3[ 'age' ] . min ( )
df3[ 'age' ] . max ( )
df3[ 'age' ] . std( )
df3[ 'age' ] . argmax( )
df3[ 'age' ] . mode( )
df3[ 'age' ] . count( )
df3[ 'age' ] . value_counts( )
18 2
22 1
21 1
20 1
19 1
Name: age, dtype: int64
df3[ 'grade' ] = [ 89 , 80 , 69 , 77 , 88 , 95 ]
print ( df3)
print ( df3[ [ 'age' , 'grade' ] ] . idxmax( axis= 1 ) )
print ( df3[ [ 'age' , 'grade' ] ] . idxmax( axis= 0 ) )
address age class gender name grade
0 北京 20 一 男 zs 89
1 上海 18 二 女 lihua 80
2 南京 21 三 男 lisi 69
3 NaN 19 三 男 wu 77
4 NaN 18 一 女 maliu 88
5 NaN 22 二 男 ss 95
0 grade
1 grade
2 grade
3 grade
4 grade
5 grade
dtype: object
age 5
grade 5
dtype: int64
print ( df3. mode( ) )
address age class gender name grade
0 上海 18.0 一 男 lihua 69
1 北京 NaN 三 NaN lisi 77
2 南京 NaN 二 NaN maliu 80
3 NaN NaN NaN NaN ss 88
4 NaN NaN NaN NaN wu 89
5 NaN NaN NaN NaN zs 95
print ( df3[ [ 'age' , 'grade' ] ] . describe( ) )
age grade
count 6.000000 6.000000
mean 19.666667 83.000000
std 1.632993 9.444575
min 18.000000 69.000000
25% 18.250000 77.750000
50% 19.500000 84.000000
75% 20.750000 88.750000
max 22.000000 95.000000
print ( df3[ [ 'age' , 'gender' ] ] . describe( ) )
age
count 6.000000
mean 19.666667
std 1.632993
min 18.000000
25% 18.250000
50% 19.500000
75% 20.750000
max 22.000000
print ( df3[ [ 'age' , 'name' ] ] . describe( ) )
age
count 6.000000
mean 19.666667
std 1.632993
min 18.000000
25% 18.250000
50% 19.500000
75% 20.750000
max 22.000000