pandas库的数据结构Series和DataFrame的基本使用
del关键字可以删除数据,删除数据时,必须使用名称索引
drop方法删除数据时:
obj = pd.Series(np.arange(5.), index=['a', 'b', 'c', 'd', 'e'])
# 修改前三个数据值为999
obj[:3] = 999
# 修改'x'索引的值为888
obj['x'] = 888
# 删除'b'索引
del obj['b']
print(obj)
# 删除'c'索引
print(obj.drop(['c']))
# 删除'a','c'索引
print(obj.drop(['c', 'a']))
# inplace参数:如果为True,执行操作并返回None
obj.drop(['x'], inplace=True)
print(obj)
dframe = pd.DataFrame(np.arange(16).reshape((4, 4)),index=['a', 'b', 'c', 'd'], columns=['A', 'B', 'C', 'D'])
# 修改列值,若不存在,添加一列
dframe['A'] = 999
dframe['X'] = [777, 888, 999, 0]
# 修改'x'索引值为111,若不存在,则添加一行
dframe.loc['x'] = 111
# 删除'B'索引的值
del dframe['B']
print(dframe)
# drop方法默认删除行
print(dframe.drop(['a', 'd']))
# 使用columns参数删除列
print(dframe.drop(columns='A'))
# 修改轴标签,默认为0(行),可以修改为1(列)
print(dframe.drop(['A', 'D'], axis=1))
算术运算法则:
a =pd.Series([0,1,2])
b =pd.DataFrame({0:[1, 2, 3],1:[4, 5, 6],2:[7,8,9]})
a b
0 0 0 1 2
1 1 0 1 4 7
2 2 1 2 5 8
dtype: int64 2 3 6 9
print(a-10)
# 一维与零维运算
0 -10
1 -9
2 -8
dtype: int64
print(b-a) # 二维与一维运算,Series默认在1轴参与运算
0 1 2
0 1 3 5
1 2 4 6
2 3 5 7
m=b.sub(a,axis=0)
print(m) #在0轴参与运算
0 1 2
0 1 4 7
1 1 4 7
2 1 4 7
a =pd.DataFrame({'one': [1, 2, 3], 'two': [4, 5, 6]})
b =pd.DataFrame({'one': [1, 2, 3], 'two': [4, 5, 6], 'three':[7,8,9]})
print(a+b)
运算结果为:
# 自动补齐,缺项为空
one three two
0 2 NaN 8
1 4 NaN 10
2 6 NaN 12
也可以使用函数来运算:
# fill_value参数填充未对齐的缺失值后再进行运算
d=b.add(a,fill_value=100)
one three two
0 2 107.0 8
1 4 108.0 10
2 6 109.0 12
方法 | 运算符 |
---|---|
add,radd | + |
sub,rsub | - |
div,rdiv | / |
floordiv,rfloordiv | // |
mul,rmul | * |
pow,rpow | ** |
p a n d a s 库 的 数 据 排 序 N a N 统 一 放 在 排 序 末 尾 \color{red}{pandas库的数据排序NaN统一放在排序末尾} pandas库的数据排序NaN统一放在排序末尾
.sort_index(axis=0,ascending=True) #在指定轴上根据索引进行排序,默认升序,默认0轴
.sort_values() #在指定轴上根据数值进行排序
Series.sort_values(axis=0,ascending=True) #默认0轴,默认升序
DataFrame.sort_values(by,axis=0,ascending=True) #by:axis轴上的某个索引或索引列表
常用统计分析函数 | 说明 |
---|---|
.sum() | 计算数据综合 |
.count() | 非nan值的数量 |
.mean() .median() | 计算数据的算数平均值,算数中位数 |
.var() .std() | 计算数据的方差,标准差 |
.min() .max() | 计算数据的最小值,最大值 |
.describe() | 输出所有统计数值 |
pandas为我们提供了很多种文件类型的读写操作,其中最常用的是CSV格式
CSV格式的特点有:
dframe = pd.DataFrame({'one': [1, 2, 3], 'two': [4, 5, 6]})
dframe.to_csv('test.csv')
to_csv方法 | |
---|---|
参数 | 说明 |
path_or_buf | 文件路径 |
sep | 分隔符,默认为逗号 |
na_rep | 如何保存NaN,默认使用空字符 |
index | 是否存储行标签,默认True |
header | 是否存储列标签,默认True |
file_data = pd.read_csv('test.csv')
read_csv方法 | |
---|---|
参数 | 说明 |
filepath_or_buffer | 文件路径或句柄 |
sep | 分隔符,默认为逗号 |
header | 指定列标签所在的行数,默认自动推断 |
index_col | 指定行标签所在的列,默认None |
names | 设置新的列标签 |
skiprows | 忽略指定的行数 |
dframe = pd.DataFrame({'one': [1, 2, 3], 'two': [4, 5, 6]})
# to_excel:将数据写入Excel文件
dframe.to_excel('test.xlsx')
# read_excel:读取Excel文件中的数据 sheet_name参数:指定读写的工作表
file_data = pd.read_excel('test.xlsx',sheet_name=0)
print(file_data)
import pandas as pd
import requests
html_data = requests.get('http://kaoshi.edu.sina.com.cn/college/majorlist/').content.decode('utf-8')
# read_html函数:将HTML中的表格解析为DataFrame对象
html_table_data = pd.read_html(html_data)
print(html_table_data)
0 | 1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|---|
0 | 专业名称 | 专业代码 | 专业大类 | 专业小类 | 操作 | |
1 | 哲学类 | 0101 | 哲学 | 哲学类 | 开设院校 | 加入对比 |
2 | 哲学 | 010101 | 哲学 | 哲学类 | 开设院校 | 加入对比 |
3 | 逻辑学 | 010102 | 哲学 | 哲学类 | 开设院校 | 加入对比 |
4 | 宗教学 | 010103 | 哲学 | 哲学类 | 开设院校 | 加入对比 |
5 | 伦理学 | 010104 | 哲学 | 哲学类 | 开设院校 | 加入对比 |
6 | 经济学类 | 0201 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
7 | 经济学 | 020101 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
8 | 经济统计学 | 020102 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
9 | 国民经济管理 | 020103 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
10 | 资源与环境经济学 | 020104 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
11 | 商务经济学 | 020105 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
12 | 能源经济 | 020106 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
13 | 劳动经济学 | 020107 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
14 | 经济工程 | 020108 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
15 | 数字经济 | 020109 | 经济学 | 经济学类 | 开设院校 | 加入对比 |
16 | 财政学类 | 0202 | 经济学 | 财政学类 | 开设院校 | 加入对比 |
17 | 财政学 | 020201 | 经济学 | 财政学类 | 开设院校 | 加入对比 |
18 | 税收学 | 020202 | 经济学 | 财政学类 | 开设院校 | 加入对比 |
19 | 金融学类 | 0203 | 经济学 | 金融学类 | 开设院校 | 加入对比 |
20 | 金融学 | 020301 | 经济学 | 金融学类 | 开设院校 | 加入对比 |