数据分析—-pandas 核心数据结构 Series & DataFrame 1 2 3 import pandas as pdimport numpy as npfrom pandas import Series, DataFrame
Series是一个定长的字典序列 ,它有两个基本属性index 、 value index 默认是 0 ,1,2,3 递增的,也可以自己指定索引 index=[‘a’, ‘b’, ‘c’]创建Series的三种方式 1 2 3 4 5 6 7 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几种方式 1 2 3 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
1 2 3 import xlrddf2 = DataFrame(pd.read_excel('datas/grades.xlsx' )) df2 = df2.drop_duplicates()
姓名 高数 英语 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
27 邹湘涛 54 40 90
数据清洗 删除不必要的行或列 1 2 3 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
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
27 54 40 90
1 2 3 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
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
重命名列名 1 df2 = df2.rename(columns={'高数' :'math' ,'英语' :'english' })
去除重复的值 1 df2 = df2.drop_duplicates()
更改数据格式 1 2 df2['math' ] = df2['math' ].astype('str' )
清除数据间的空格 1 2 df2['math' ] = df2['math' ].map(str.strip) df2['math' ] = df2['math' ].map(str.lstrip)
删除指定字符 1 df2['math' ] = df2['math' ].str.strip('$' )
大小写转换 1 df2.columns = df2.columns.str.upper()
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函数对数据进行清洗 1 2 3 df2['MATH' ] = df2['MATH' ].astype(np.int64) df2
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
1 2 3 4 def plus (df) : df['Total' ] = df['MATH' ]+df['ENGLISH' ]+df['C++' ] return df df2 = df2.apply(plus,axis=1 )
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
5 60 63 70 193
6 74 60 20 154
7 38 21 92 151
8 88 67 84 239
9 86 74 96 256
10 84 60 90 234
11 64 69 96 229
12 60 33 70 163
13 76 56 84 216
14 68 54 94 216
15 68 63 98 229
16 39 44 56 139
17 90 63 90 243
18 64 63 78 205
19 74 60 76 210
20 52 48 94 194
21 60 69 74 203
22 70 49 76 195
23 91 67 86 244
24 78 73 88 239
25 100 60 98 258
26 80 63 100 243
pandas中常用的统计函数
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