pandas 筛选负数并替换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 筛选负数并替换相关的知识,希望对你有一定的参考价值。
参考技术A 在pd.read_excel就出现了这个错误,导致没有办法读取因此也没法进行下面的步骤
但是因为 未转在仓天数不全是数字,有以下报错
因此,考虑使用包含负数去写
都不奏效
跳过这个日期
pandas_读取Excel并筛选特定数据
# C:UserslenovoDesktop总结Python
# 读取 Excel 文件并进行筛选
import pandas as pd
# 设置列对齐
pd.set_option("display.unicode.ambiguous_as_wide",True)
pd.set_option("display.unicode.east_asian_width",True)
# 读取工号姓名时段交易额,使用默认索引
dataframe = pd.read_excel(r‘C:UserslenovoDesktop总结Python超市营业额.xlsx‘,
usecols = [‘工号‘,‘姓名‘,‘时段‘,‘交易额‘])
# 打印前十行数据
dataframe[:10]
‘‘‘
工号 姓名 时段 交易额
0 1001 张三 9:00-14:00 2000
1 1002 李四 14:00-21:00 1800
2 1003 王五 9:00-14:00 800
3 1004 赵六 14:00-21:00 1100
4 1005 周七 9:00-14:00 600
5 1006 钱八 14:00-21:00 700
6 1006 钱八 9:00-14:00 850
7 1001 张三 14:00-21:00 600
8 1001 张三 9:00-14:00 1300
9 1002 李四 14:00-21:00 1500
‘‘‘
# 跳过 1 2 4 行,以第一列姓名为索引
dataframe2 = pd.read_excel(r‘C:UserslenovoDesktop总结Python超市营业额.xlsx‘,
skiprows = [1,2,4],
index_col = 1)
‘‘‘注:张三李四赵六的第一条数据跳过
工号 日期 时段 交易额 柜台
姓名
王五 1003 20190301 9:00-14:00 800 食品
周七 1005 20190301 9:00-14:00 600 日用品
钱八 1006 20190301 14:00-21:00 700 日用品
钱八 1006 20190301 9:00-14:00 850 蔬菜水果
张三 1001 20190302 14:00-21:00 600 蔬菜水果
‘‘‘
# 筛选符合特定条件的数据
# 读取超市营业额数据
dataframe = pd.read_excel(r‘C:UserslenovoDesktop总结Python超市营业额.xlsx‘)
# 查看 5 到 10 的数据
dataframe[5:11]
‘‘‘
工号 姓名 日期 时段 交易额 柜台
5 1006 钱八 20190301 14:00-21:00 700 日用品
6 1006 钱八 20190301 9:00-14:00 850 蔬菜水果
7 1001 张三 20190302 14:00-21:00 600 蔬菜水果
8 1001 张三 20190302 9:00-14:00 1300 化妆品
9 1002 李四 20190302 14:00-21:00 1500 化妆品
10 1003 王五 20190302 9:00-14:00 1000 食品
‘‘‘
# 查看第六行的数据
dataframe.iloc[5]
‘‘‘
工号 1006
姓名 钱八
时段 14:00-21:00
交易额 700
Name: 5, dtype: object
‘‘‘
dataframe[:5]
‘‘‘
工号 姓名 时段 交易额
0 1001 张三 9:00-14:00 2000
1 1002 李四 14:00-21:00 1800
2 1003 王五 9:00-14:00 800
3 1004 赵六 14:00-21:00 1100
4 1005 周七 9:00-14:00 600
‘‘‘
# 查看第 1 3 4 行的数据
dataframe.iloc[[0,2,3],:]
‘‘‘
工号 姓名 时段 交易额
0 1001 张三 9:00-14:00 2000
2 1003 王五 9:00-14:00 800
3 1004 赵六 14:00-21:00 1100
‘‘‘
# 查看第 1 3 4 行的第 1 2 列
dataframe.iloc[[0,2,3],[0,1]]
‘‘‘
工号 姓名
0 1001 张三
2 1003 王五
3 1004 赵六
‘‘‘
# 查看前五行指定,姓名、时段和交易额的数据
dataframe[[‘姓名‘,‘时段‘,‘交易额‘]][:5]
‘‘‘
姓名 时段 交易额
0 张三 9:00-14:00 2000
1 李四 14:00-21:00 1800
2 王五 9:00-14:00 800
3 赵六 14:00-21:00 1100
4 周七 9:00-14:00 600
‘‘‘
dataframe[:5][[‘姓名‘,‘时段‘,‘交易额‘]]
‘‘‘
姓名 时段 交易额
0 张三 9:00-14:00 2000
1 李四 14:00-21:00 1800
2 王五 9:00-14:00 800
3 赵六 14:00-21:00 1100
4 周七 9:00-14:00 600
‘‘‘
# 查看第 2 4 5 行 姓名,交易额 数据 loc 函数
dataframe.loc[[1,3,4],[‘姓名‘,‘交易额‘]]
‘‘‘
姓名 交易额
1 李四 1800
3 赵六 1100
4 周七 600
‘‘‘
# 查看第四行的姓名数据
dataframe.at[3,‘姓名‘]
# ‘赵六‘
# 查看交易额大于 1700 的数据
dataframe[dataframe[‘交易额‘] > 1700]
‘‘‘
工号 姓名 时段 交易额
0 1001 张三 9:00-14:00 2000
1 1002 李四 14:00-21:00 1800
‘‘‘
# 查看交易额总和
dataframe.sum()
‘‘‘
工号 17055
姓名 张三李四王五赵六周七钱八钱八张三张三李四王五赵六周七钱八李四王五张三...
时段 9:00-14:0014:00-21:009:00-14:0014:00-21:009:00...
交易额 17410
dtype: object
‘‘‘
# 某一时段的交易总和
dataframe[dataframe[‘时段‘] == ‘14:00-21:00‘][‘交易额‘].sum()
# 8300
# 查看张三在下午14:00之后的交易情况
dataframe[(dataframe.姓名 == ‘张三‘) & (dataframe.时段 == ‘14:00-21:00‘)][:10]
‘‘‘
工号 姓名 时段 交易额
7 1001 张三 14:00-21:00 600
‘‘‘
# 查看日用品的销售总额
# dataframe[dataframe[‘柜台‘] == ‘日用品‘][‘交易额‘].sum()
# 查看张三总共的交易额
dataframe[dataframe[‘姓名‘].isin([‘张三‘])][‘交易额‘].sum()
# 5200
# 查看交易额在 1500~3000 之间的记录
dataframe[dataframe[‘交易额‘].between(1500,3000)]
‘‘‘
工号 姓名 时段 交易额
0 1001 张三 9:00-14:00 2000
1 1002 李四 14:00-21:00 1800
9 1002 李四 14:00-21:00 1500
‘‘‘
2020-05-07
以上是关于pandas 筛选负数并替换的主要内容,如果未能解决你的问题,请参考以下文章