一、认识pandas
pandas的优势:
· 增强图表的可读性;
· 便捷的数据处理能力;
· 读取文件更加方便;
· 封装了Matplotlib和Numpy的画图与计算;
如图所示,pandas使图表可读性更强
二、Series结构
Series是一个类似于一维数组的数据结构,能够保存任何类型的数据。
主要由一组数据和与之相关的索引构成。
1. Series的创建
import pandas as pd
import numpy as np
# Series
pd.Series(data=None, index=None, dtype=None)
# 创建
ser1 = pd.Series(np.arange(5))
print(ser1)
ser2 = pd.Series([6.8,5,23,14,8.999], index=[2,3,4,5,6])
print(ser2)
# 通过字典创建
ser3 = pd.Series({'red':100, 'blue':200, 'yellow':500})
print(ser3)
· 参数:
data:传入的数据,可以是ndarray、list等;
index:索引,必须是唯一的,并且与数据长度相等。默认为0—N;
dtype:数据类型;
运行结果如下:
2. Series的属性
· index
· values
# 获取Series类元素的索引
print(ser3.index)
# 获取Series类的数据值
print(ser3.values)
三、DataFrame
1. DataFrame的属性
DataFrame是一个类似于二维数组或表格的对象,既有行索引也有列索引
· 行索引,表明不同行,横向索引,叫index,0轴,axis=0;
· 列索引,表明不同列,纵向索引,叫columns,1轴,axis=1;
pd.DataFrame(data=None, index=None, columns=None)
· 参数:
index:行标签,默认0—N;
columns:列标签,默认0—N;
· 通过已有数据创建:
daf1 =np.DataFrame(np.random.randn(2,3))
但是,直接显示出来数据的可读性较差,如何改善其显示呢?
# 例:创建学生成绩表
# 10名同学,5门成绩(40分—100分,10行5列)
daf2 = np.random.randint(40, 100, (10,5))
# daf2直接显示出来可读性比较差,如何让数据更有意义地显示?
# 使用pandas的数据结构
score = pd.DataFrame(daf2)
# 构造行、列索引序列
subjects = ["语文", "数学", "英语", "政治", "物理"]
stu = ["同学" + str(i) for i in range(score.shape[0])]
data = pd.DataFrame(daf2, columns=subjects, index=stu)
print(daf1)
print(daf2)
print(score)
print(data)
运行结果如下:
2. DataFrame的属性
· shape(表示元素的行列数)
· index(返回DataFrame的行索引列表)
· columns(返回DataFrame的列索引列表)
· values(直接获取其中的数值)
· T(转置)
· head(n)(获取前n行内容)
· tail(n)(获取后n行内容)
3. 设置索引值
· 修改行列索引值
※ 必须整体全部修改!无法单单修改某一个的索引!
# 重新设置索引
stu = ["学生" + str(i) for i in range(score.shape[0])]
# 整体修改
data.index = stu
# 错误修改方式:
# data.index[2] = "学生2"
· 以某列值设置为新的索引
set_index(key, drop=True)
· key:列索引名或者列索引名称的种类;
· drop:boolean类型,默认为True,当作新的索引删除原来的列;
四、Multilndex
Multilndex是三位的数据结构
Multilndex的创建