数据分析----pandas
核心数据结构 Series & DataFrame
import pandas as pd
import numpy as npfrom pandas
import Series, DataFrame
Series是一个定长的字典序列 ,它有两个基本属性index 、 value index 默认是 0 ,1,2,3 递增的,也可以自己指定索引 index=[‘a’, ‘b’, ‘c’]
创建Series的三种方式
x1 = Series( [ 1 , 2 , 3 , 4 ] )
x2 = Series( data= [ 1 , 2 , 3 , 4 ] , index= [ 'a' , 'b' , 'c' , 'd' ] )
dic = { 'a' : 1 , 'b' : 2 , 'c' : 3 , 'd' : 4 }
x3 = Series( dic)
print ( x1)
print ( x2)
print ( x3)
0 1 1 2 2 3 3 4
dtype: int64
a 1 b 2 c 3 d 4
dtype: int64
a 1 b 2 c 3 d 4
dtype: int64
DataFrame类似数据库中的表,可以将其看成是由有相同的索引的Series组成
创建DataFra几种方式
data = { "chinese" : [ 90 , 80 , 70 , 60 , 50 ] , 'math' : [ 70 , 80 , 70 , 90 , 60 ] , 'english' : [ 30 , 50 , 70 , 80 , 60 ] }
df1 = DataFrame( data= data, index= [ 'zhangfei' , 'guanyu' , 'zhaoyun' , 'huangzhong' , 'machao' ] )
print ( df)
chinese english math
zhangfei 90 30 70
guanyu 80 50 80
zhaoyun 70 70 70
huangzhong 60 80 90
machao 50 60 60
import xlrddf2 = DataFrame( pd. read_excel( 'datas/grades.xlsx' ) )
df2 = df2. drop_duplicates( )
print ( df2)
姓名 高数 英语 C++
0 蒋广佳 43 69 61
1 廖菲 80 64 62
2 沈秀玲 68 74 98
3 韦丹 48 53 64
4 张梦雅 72 73 96
5 赵雅欣 60 63 70
6 曹海广 74 60 20
7 陈泽灿 38 21 92
8 邓杰 88 67 84
。。。。。。。。。。
数据清洗
删除不必要的行或列
df2 = df2. drop( columns= [ '姓名' ] )
print ( df2)
高数 英语 C++
0 43 69 61
1 80 64 62
2 68 74 98
3 48 53 64
4 72 73 96
df2 = df2. drop( index = [ 27 ] )
print ( df2)
高数 英语 C++
0 43 69 61
1 80 64 62
2 68 74 98
3 48 53 64
4 72 73 96
重命名列名
df2 = df2. rename( columns= { '高数' : 'math' , '英语' : 'english' } )
去除重复的值
df2 = df2. drop_duplicates( )
更改数据格式
df2[ 'math' ] = df2[ 'math' ] . astype( 'str' )
清除数据间的空格
df2[ 'math' ] = df2[ 'math' ] . map ( str . strip)
df2[ 'math' ] = df2[ 'math' ] . map ( str . lstrip)
删除指定字符
df2[ 'math' ] = df2[ 'math' ] . str . strip( '$' )
大小写转换
df2. columns = df2. columns. str . upper( )
pythondf2
MATH ENGLISH C++ 0 43 69 61 1 80 64 62 2 68 74 98 3 48 53 64 4 72 73 96 5 60 63 70 6 74 60 20 7 38 21 92 8 88 67 84 9 86 74 96 10 84 60 90 11 64 69 96 12 60 33 70 13 76 56 84 14 68 54 94 15 68 63 98 16 39 44 56 17 90 63 90 18 64 63 78 19 74 60 76 20 52 48 94 21 60 69 74 22 70 49 76 23 91 67 86 24 78 73 88 25 100 60 98 26 80 63 100
使用apply函数对数据进行清洗
df2[ 'MATH' ] = df2[ 'MATH' ] . astype( np. int64)
MATH ENGLISH C++ 0 43 69 61 1 80 64 62 2 68 74 98 3 48 53 64 4 72 73 96 5 60 63 70 6 74 60 20 7 38 21 92 8 88 67 84 9 86 74 96 10 84 60 90 11 64 69 96 12 60 33 70 13 76 56 84 14 68 54 94 15 68 63 98 16 39 44 56 17 90 63 90 18 64 63 78 19 74 60 76 20 52 48 94 21 60 69 74 22 70 49 76 23 91 67 86 24 78 73 88 25 100 60 98 26 80 63 100
def plus ( df) :
df[ 'Total' ] = df[ 'MATH' ] + df[ 'ENGLISH' ] + df[ 'C++' ]
return dfdf2 = df2. apply ( plus, axis= 1 )
print ( df2)
MATH ENGLISH C++ Total
0 43 69 61 173
1 80 64 62 206
2 68 74 98 240
3 48 53 64 165
4 72 73 96 241
pandas中常用的统计函数
print ( df2. describe( ) )
MATH ENGLISH C++ Total
count 27.000000 27.000000 27.000000 27.000000
mean 69.444444 59.703704 81.148148 210.296296
std 16.113380 12.406000 17.933003 34.410212
min 38.000000 21.000000 20.000000 139.000000
25% 60.000000 55.000000 72.000000 193.500000
50% 70.000000 63.000000 86.000000 216.000000
75% 80.000000 68.000000 95.000000 239.500000
max 100.000000 74.000000 100.000000 258.000000