# 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

操作程序:

### 读取数据
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

# 从程序创建

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

下面根据某列再生成一列:

# 使用函数
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