# Pandas库
Pandas是python的第三方库,提供高性能易用数据类型和分析工具,基于Numpy实现,它有两大数据结构:Series和DataFrame,Series是键值对的形式,面向一维数据结构,DataFrame是表数据结构,既有行索引,又有列索引,面向多维数据。
# 从csv文件中读取
pandas中的dataframe的操作,极大一部分跟numpy中的二维数组很相似。现在使用一个例子来熟悉它的基本操作,下面是一个score.csv文件的内容,读取然后做下简单处理:
id,name,class,math,english
1,wang,一班,89,90
2,li,二班,76,70
3,zhang,二班,54,65
4,li,三班,83,72
1
2
3
4
5
2
3
4
5
操作程序:
### 读取数据
import pandas as pd
df = pd.read_csv('score.csv')
df.head()
df.tail(3)
### 查看DataFrame
# 查看df类型
print(type(df))
# 查看列名
print(df.columns)
# 查看索引范围
print(df.index)
# 查看第一个元素
df.loc[0]
### 选择元素
# 判断某列元素是否符合某个条件
result=df.math > 70
type(result)
# 按列表显示符合条件的元素
df[df.math < 70]
df[(df.math>60) & (df.english <80)]
# 按某一列排序
df.sort_values(['math'])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 从程序创建
import pandas as pd
scores={
'英语':[70,90,80],
'数学':[64,78,45],
'姓名':["王","李","孙"]
}
df = pd.DataFrame(scores,index=['one','two','three'])
print(df)
# 自己生成DataFrame没有自动递增数字索引
# df.loc[0]
# 获取第二行
df.loc['two']
# 获取第二行
df.iloc[1]
# 获取前两行
df.iloc[:2]
# 只查看它的值
df.values
# 查看数学这列都有什么
df.数学
df["数学"]
# 查看数学和英语两列
df[['数学','英语']]
# 查看数学这列每个数值都有几个
df.数学.value_counts()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
下面根据某列再生成一列:
# 使用函数
def func(score):
if score >= 80:
return "优秀"
elif score >= 70:
return "良"
else:
return "其他"
df['数学分类'] = df.数学.map(func)
# 使用匿名函数
df.applymap(lambda x: str(x)+' |')
## 选取数学一列
df.apply(lambda x:x.数学,axis=1)
## 让数学+英语
df['math+english']=df.apply(lambda x: x.数学+x.英语,axis=1)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16