目录
一、作用
数据整理分析库、基于Numpy。
二、基础环境
(一)执行虚拟环境的终端命令
pip install pandas
(二)代码中导包
import pandas as pd
三、应用:一维数组
(一)Series对象
1. 含义
Series 适用于一维数组。利用列表、字典等对象,创建带有标签(索引)的一维数组。
2. 常用属性和方法
(1)属性
se = pd.Series(['数据结构', '数据库原理', '计算机', '操作系统'])
print(se.size) # 返回元素总个数 4
print(se.shape) # 返回行数&列数 (4,)
print(se.index) # 返回行索引 RangeIndex(start=0, stop=4, step=1)
print(se.index.tolist()) # 返回列表形式的行索引 [0, 1, 2, 3]
print(se.axes) # [RangeIndex(start=0, stop=4, step=1)]
(2)方法
print(se.head(2)) # 前几行数据,默认前5行
print(se.tail(2)) # 后几行数据,默认后5行
print(se.describe()) # 描述统计信息,包括计算总数、唯一值个数、出现最高频率等
(二)创建一维数组
1. 使用Series(序列)对象,索引默认从0开始
a = ['数据结构', '数据库原理', '计算机', '操作系统']
b = pd.Series(a)
2. Series可用index指定索引
a = ['数据结构', '数据库原理', '计算机', '操作系统']
b = pd.Series(a, index=['索引1', '索引2', '索引3', '索引4'])
print(b)
3. Series搭配字典指定索引
test_dict = {'索引1': '数据结构', '索引2': '数据库原理', '索引3': '计算机', '索引4': '操作系统'}
b = pd.Series(test_dict)
print(b)
4. 筛选数据
test_dict = {'索引1': '数据结构', '索引2': '数据库原理', '索引3': '计算机', '索引4': '操作系统'}
b = pd.Series(test_dict, index=['索引1', '索引9'])
print(b)
结果是:
索引1 数据结构
索引9 NaN
dtype: object
如果想要去除index对应为NaN的数据,则搭配dropna。
test_dict = {'索引1': '数据结构', '索引2': '数据库原理', '索引3': '计算机', '索引4': '操作系统'}
b = pd.Series(test_dict, index=['索引1', '索引9'])
print(b)
结果是:
索引1 数据结构
dtype: object
(三)取一位数组的值
iloc:第几行为索引,loc:标签为索引。
1. 按索引取值
a = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']
b = pd.Series(a, index=[31,32,33,34])
c = b[31] # 数据结构
c2 = b.loc[31] # 数据结构
2. 按位置取值
a = ['数据结构', '数据库原理', '操作系统', '计算机组成原理']
b = pd.Series(a, index=[31,32,33,34])
c = b[31] # 数据结构
c2 = b.iloc[0] # 数据结构
(四)计算向量值
1. 根据索引来计算,而不是位置对应
a = pd.Series([100, 200, 300, 400], index=[31,32,33,34])
b = pd.Series([1,2,3,4], index=[32,31,34,33])
c = a+b
print(c)
结果是:
31 102
32 201
33 304
34 403
dtype: int64
# 其中,索引31对应的值是102,而不是101
2. 计算不存在的列,则得空值NaN
a = pd.Series([100, 200, 300, 400], index=[31,32,33,34])
b = pd.Series([1,2,3,4], index=[30,32,33,34])
c = a+b
# c = a.add(b)
print(c)
结果是:
30 NaN
31 NaN
32 202.0
33 304.0
34 403.0
(五)处理空值
1. dropna 删除空值
a = pd.Series([100, 200, 300, 400], index=[31,32,33,34])
b = pd.Series([1,2,3,4], index=[30,32,33,34])
c = a+b
# c = a.add(b)
d = c.dropna()
print(d)
结果是:
32 202.0
33 304.0
34 403.0
2. 填充空值
(1)fillna 填充空值
a = pd.Series([100, 200, 300, 400], index=[31,32,33,34])
b = pd.Series([1,2,3,4], index=[30,32,33,34])
c = a+b
d=c.fillna('空值')
print(d)
结果是:
30 空值
31 空值
32 202.0
33 303.0
34 404.0
dtype: object
(2)add的fill_value属性
a = pd.Series([100, 200, 300, 400], index=[31,32,33,34])
b = pd.Series([1,2,3,4], index=[30,32,33,34])
c = a.add(b, fill_value=0)
print(c)
结果是:
30 1.0
31 100.0
32 202.0
33 303.0
34 404.0
(六)获取基本统计值
a = [1,2,3,4,5]
b = pd.Series(a, index=['第1位数', '第2位数', '第3位数', '第4位数', '第5位数'])
c = b.describe()
四、应用:二维数组
(一)DataFrame 对象
1. 含义
DataFrame适用于二维数组。可以从二维数组、字典、CSV文件等,创建二维表格。
其他知识点:
NA:not available 不可用
NaN:not a number
NAT:not a time
2. 常用属性和方法
(1)属性
df = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': [100,200,300,400]
})
print(df.size) # 返回元素总个数 12
print(df.shape) # 返回行数&列数 (4,3)
print(df.columns) # 返回列索引 Index(['待售书籍', '出版社', '预售数量'], dtype='object')
print(df.columns.tolist()) # 返回列表形式的列索引 ['待售书籍', '出版社', '预售数量']
print(df.index) # 返回行索引 RangeIndex(start=0, stop=4, step=1)
print(df.index.tolist()) # 返回列表形式的行索引 [0, 1, 2, 3]
print(df.axes) # [RangeIndex(start=0, stop=4, step=1), Index(['待售书籍', '出版社', '预售数量'], dtype='object')]
(2)方法
df = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': [100,200,300,400]
})
print(df.head(2)) # 前几行数据,默认前5行
print(df.tail(2)) # 后几行数据,默认后5行
print(df.describe()) # 描述统计信息,包括计数、均值、标准差、最值等
(二)建立二维数组
1. 使用DataFrame(数据框)
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': [100,200,300,400]
})
结果是:
待售书籍 出版社 预售数量
0 小熊之家 爱月社 100
1 复兴之路 兴业社 200
2 操作系统 阳光组 300
3 爱的教育 教育局 400
2. 数据类型可不一致
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': ['100',2.00,300,400]
})
结果是:
待售书籍 出版社 预售数量
0 小熊之家 爱月社 ¥100
1 复兴之路 兴业社 2.0
2 操作系统 阳光组 300
3 爱的教育 教育局 400
# 其中,¥100是字串, 2.0是浮点数,300是整数
(三) 获取二维数组的值
1. 按索引取值
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': ['100',2.00,300,400]
})
b = a.loc[0, '待售书籍'] # 小熊之家
b2 = a.loc[1, :] # loc 列索引
结果是:
待售书籍 复兴之路
出版社 兴业社
预售数量 2.0
# 其中,a的值是:
待售书籍 出版社 预售数量
0 小熊之家 爱月社 100
1 复兴之路 兴业社 2.0
2 操作系统 阳光组 300
3 爱的教育 教育局 400
2. 按位置取值
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': ['100',2.00,300,400]
})
b = a.iloc[0,1] # 爱月社
b2 = a.iloc[0, :] # 获取第一行的值(并且呈现表格的形式),iloc 行索引
结果是:
待售书籍 小熊之家
出版社 爱月社
预售数量 100
# 其中,a的值是:
待售书籍 出版社 预售数量
0 小熊之家 爱月社 100
1 复兴之路 兴业社 2.0
2 操作系统 阳光组 300
3 爱的教育 教育局 400
3. 按列名取值
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'预售数量': ['100',2.00,300,400]
})
b = a[ ['待售书籍', '出版社'] ] # 双阵列
print(b)
结果是:
待售书籍 出版社
0 小熊之家 爱月社
1 复兴之路 兴业社
2 操作系统 阳光组
3 爱的教育 教育局
# 其中,a的值是:
待售书籍 出版社 预售数量
0 小熊之家 爱月社 100
1 复兴之路 兴业社 2.0
2 操作系统 阳光组 300
3 爱的教育 教育局 400
4. 按范围取值
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b=a.loc[0:2, '作者':'价格¥']
结果是:
作者 出版社 价格¥
0 星星 爱月社 35.0
1 扇子 兴业社 48.0
2 刺猬 阳光组 37.0
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
5. 按自定义条件取值
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b=a.loc[:, '价格¥'] > 40 # 判断价格是否大于40
c = a.loc[b, :] # 将判断后的索引作为范围条件
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
1 复兴之路 扇子 兴业社 48.0 200
3 爱的教育 尾巴 教育局 42.0 400
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
# 以及,b的值是:
0 False
1 True
2 False
3 True
Name: 价格¥, dtype: bool
(四)二维数组的数据处理
1. 列操作
(1)重命名列名
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
a.rename(columns={'待售书籍': '图书名', '作者': '作家'}, inplace=True)
b = a # 不能用b = a.rename(...),而是b = a
print(b)
结果是:
图书名 作家 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
(2)添加新列
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
a['出版时间'] = ['20240101', '20240202', '20240304', '20240405']
print(a)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量 出版时间
0 小熊之家 星星 爱月社 35.0 100 20240101
1 复兴之路 扇子 兴业社 48.0 200 20240202
2 操作系统 刺猬 阳光组 37.0 300 20240304
3 爱的教育 尾巴 教育局 42.0 400 20240405
(3)删除指定列
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
a.drop('待售书籍', axis=1) # axis=1表示操作列
print(a)
结果是:
作者 出版社 价格¥ 预售数量
0 星星 爱月社 35.0 100
1 扇子 兴业社 48.0 200
2 刺猬 阳光组 37.0 300
3 尾巴 教育局 42.0 400
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
2. 行操作
(1)删除指定行
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b = a.drop(0, axis=0) # 参数位置1的索引0表示第一行, 参数位置2的axis=0表示操作行
print(b)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
3. 索引操作
(1)重置索引
a = pd.DataFrame({
'待售书籍': ['小熊之家', None, '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b = a.dropna(subset=['待售书籍', '作者'], how='any') # 去除指定列中含有空值的行数据
c = b.reset_index(drop=True)
print(c)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 操作系统 刺猬 阳光组 37.0 300
2 爱的教育 尾巴 教育局 42.0 400
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 None 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
(2)修改索引
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
a.index = a['作者']
print(a)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
作者
星星 小熊之家 星星 爱月社 35.0 100
扇子 复兴之路 扇子 兴业社 48.0 200
刺猬 操作系统 刺猬 阳光组 37.0 300
尾巴 爱的教育 尾巴 教育局 42.0 400
# 其中,a的原始值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 复兴之路 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
4. 处理空值
(1)判断空值
a = pd.DataFrame({
'待售书籍': ['小熊之家', None, '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b= a.isnull()
print(b)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
0 False False False False False
1 True False False False False
2 False False False False False
3 False False False False False
(2)填充空值
a = pd.DataFrame({
'待售书籍': ['小熊之家', None, '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b= a.fillna('空值')
print(b)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 空值 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
(3)删除空值
a = pd.DataFrame({
'待售书籍': ['小熊之家', None, '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400]
})
b = a.dropna(subset=['待售书籍', '作者'], how='any') # 去除指定列中含有空值的行数据
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
# 其中,a的值是:
待售书籍 作者 出版社 价格¥ 预售数量
0 小熊之家 星星 爱月社 35.0 100
1 None 扇子 兴业社 48.0 200
2 操作系统 刺猬 阳光组 37.0 300
3 爱的教育 尾巴 教育局 42.0 400
5. 转换数值类型
(1)转成float64格式
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400],
'出版日期': ['20240101','20240202','20240304','20240405']
})
a['待售书籍'] = a['待售书籍'].astype('float') # 将object转换为float64格式
print(a)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量 出版日期
0 小熊之家 星星 爱月社 35.0 100.0 20240101
1 复兴之路 扇子 兴业社 48.0 200.0 20240202
2 操作系统 刺猬 阳光组 37.0 300.0 20240304
3 爱的教育 尾巴 教育局 42.0 400.0 20240405
(2)转成时间格式
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400],
'出版日期': ['20240101','20240202','20240304','20240405']
})
a.loc[:, '出版日期'] = pd.to_datetime(a.loc[:, '出版日期'],
format='%Y%m%d', # 原数据格式
errors='coerce') # 不符合格式的值转成NaT
print(a)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量 出版日期
0 小熊之家 星星 爱月社 35.0 100 2024-01-01 00:00:00
1 复兴之路 扇子 兴业社 48.0 200 2024-02-02 00:00:00
2 操作系统 刺猬 阳光组 37.0 300 2024-03-04 00:00:00
3 爱的教育 尾巴 教育局 42.0 400 2024-04-05 00:00:00
6. 数据排序
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '刺猬', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400],
'出版日期': ['20240101','20240202','20240304','20240405']
})
b = a.sort_values(by='出版日期', ascending=True,na_position='first')
# na_position='first' 表示排序时,空值靠前。
print(b)
7. 去重
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '小熊之家'],
'作者': ['星星', '扇子', '刺猬', '星星'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400],
'出版日期': ['20240101','20240202','20240304','20240405']
})
b = a.drop_duplicates(subset=['待售书籍', '作者'])
print(b)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量 出版日期
0 小熊之家 星星 爱月社 35.0 100 20240101
1 复兴之路 扇子 兴业社 48.0 200 20240202
2 操作系统 刺猬 阳光组 37.0 300 20240304
# 其中,a的值:
待售书籍 作者 出版社 价格¥ 预售数量 出版日期
0 小熊之家 星星 爱月社 35.0 100 20240101
1 复兴之路 扇子 兴业社 48.0 200 20240202
2 操作系统 刺猬 阳光组 37.0 300 20240304
3 小熊之家 星星 教育局 42.0 400 20240405
(五)常用函数
1. 运用
计算每列(而不是每行)
2. 常用
mean() 求平均数、std()求标准差、count()计数、nunique()去重后计数、groupby() 分组等查询。
(1)mean( )
a = pd.DataFrame({
'预售数量': [10,20,30,40],
'实际出售': [100,200,300,400]
})
b = a.mean()
结果是:
预售数量 25.0
实际出售 250.0
(2)groupby( )
a = pd.DataFrame({
'待售书籍': ['小熊之家', '复兴之路', '操作系统', '爱的教育'],
'作者': ['星星', '扇子', '星星', '尾巴'],
'出版社': ['爱月社', '兴业社', '阳光组', '教育局'],
'价格¥': [35.00,48.00,37.00,42.00],
'预售数量': [100,200,300,400],
'出版日期': ['20240101','20240101','20240304','20240405']
})
b = a.groupby(a['出版日期']).sum()
print(b)
结果是:
待售书籍 作者 出版社 价格¥ 预售数量
出版日期
20240101 小熊之家复兴之路 星星扇子 爱月社兴业社 83.0 300
20240304 操作系统 星星 阳光组 37.0 300
20240405 爱的教育 尾巴 教育局 42.0 400
五、分析xls文件
(一)基础环境
执行虚拟环境的终端命令:
pip install openpyxl
(二)查看文件数据
filename = 'D:\book\test\\20240509测试数据book.xlsx' # 文件位置
open_data = pd.read_excel(filename, sheet_name='bookinfo', dtype=str) # 打开文件
a = open_data.head(10) # 只读取十笔数据
b =open_data.shape # 查看行数、列数 (12, 7)
b =open_data.shape[0] # 查看行数 (12)
Excel文件内容如下:
(三)处理文件数据
1. 连续范围取值
filename = 'D:\book\test\\20240509测试数据book.xlsx'
open_data = pd.read_excel(filename, sheet_name='bookinfo', dtype=str)
a = open_data.head(6)
print(a) # 查看截取的部分数据
print(open_data) # 一次性查看所有数据
结果是:
图书名 name 作者 author 图书类型 btype
0 数据结构 小星星 计算机
1 操作系统 小糖人 计算机
2 无人生还 艾草青 现代文学
3 科幻世界 草莓熊 现代文学
4 世界另我 花木兰 现代文学
5 西游记 吴承恩 古典文学
2. 自定义范围取值
filename = 'D:\book\test\\20240509测试数据book.xlsx'
open_data = pd.read_excel(filename, sheet_name='bookinfo', dtype=str)
a = open_data.loc[0:5, '图书名 name':'图书类型 btype'] #截取数据
print(a)
结果是:
图书名 name 作者 author 图书类型 btype
0 数据结构 小星星 计算机
1 操作系统 小糖人 计算机
2 无人生还 艾草青 现代文学
3 科幻世界 草莓熊 现代文学
4 世界另我 花木兰 现代文学
5 西游记 吴承恩 古典文学
3. 检查文件数据
filename = 'D:\book\test\\20240509测试数据book.xlsx'
open_data = pd.read_excel(filename, sheet_name='bookinfo', dtype=str)
# a = open_data.head(10)
a = open_data.loc[0:5, '图书号 card':'出版日期 bdate']
b = a.describe() # 可以查看数据笔数、时间格式是否正确等
print(b)
结果是:
图书号 card 图书名 name 作者 author 图书类型 btype 出版社 press 图书总量 num 出版日期 bdate
count 5 5 5 5 6 6 5
unique 5 4 4 4 2 5 5
top 1F001 无人生还 艾草青 计算机 教育部 10 2023-01-04 00:00:00
freq 1 2 2 2 3 2 1