源数据:
import pandas as pd
pd.set_option('display.unicode.east_asian_width', True)
df = pd.read_excel('../data/马士兵课程记录.xlsx')
print(df)
print('---------------------------------------------------------------')
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
3 msb004 9980.00 NaN 算法与数据结构进阶班 课程 2020-06-30
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
7 msb008 1.00 NaN 自定义注解 课程 2020-03-26
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28
使用DataFrame对象的info()
方法
print(df.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 11 entries, 0 to 10
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 买家会员名 11 non-null object
1 买家实际支付金额 11 non-null float64
2 课程总数量 9 non-null float64
3 课程标题 11 non-null object
4 类别 9 non-null object
5 订单付款时间 11 non-null datetime64[ns]
dtypes: datetime64[ns](1), float64(2), object(3)
memory usage: 656.0+ bytes
None
使用DataFrame的isnull()
方法和notnull()
方法
print(df.isnull())
print('---------------------------------------------------------------')
print(df.notnull())
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 False False False False False False
1 False False False False True False
2 False False False False False False
3 False False True False False False
4 False False False False True False
5 False False False False False False
6 False False False False False False
7 False False True False False False
8 False False False False False False
9 False False False False False False
10 False False False False False False
---------------------------------------------------------------
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 True True True True True True
1 True True True True False True
2 True True True True True True
3 True True False True True True
4 True True True True False True
5 True True True True True True
6 True True True True True True
7 True True False True True True
8 True True True True True True
9 True True True True True True
10 True True True True True True
不处理
删除
df = df.dropna()
print(df)
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28
df = df[df['课程总数量'].notnull()]
print(df)
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28
填充或替换
df['课程总数量'] = df['课程总数量'].fillna(0)
print(df)
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
3 msb004 9980.00 0.0 算法与数据结构进阶班 课程 2020-06-30
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
7 msb008 1.00 0.0 自定义注解 课程 2020-03-26
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28
print(df.duplicated())
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 True
dtype: bool
df = df.drop_duplicates()
print(df)
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
3 msb004 9980.00 NaN 算法与数据结构进阶班 课程 2020-06-30
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
7 msb008 1.00 NaN 自定义注解 课程 2020-03-26
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
df = df.drop_duplicates(['买家实际支付金额'], keep='last')
print(df)
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
3 msb004 9980.00 NaN 算法与数据结构进阶班 课程 2020-06-30
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
7 msb008 1.00 NaN 自定义注解 课程 2020-03-26
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28
new_df = df.drop_duplicates(['买家实际支付金额'], inplace=False)
print(new_df) # 修改后
print('-----------------------------------------------------------------------------------')
print(df) # 原数据
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
-----------------------------------------------------------------------------------
买家会员名 买家实际支付金额 课程总数量 课程标题 类别 订单付款时间
0 msb001 30960.00 2.0 Java互联网高级架构师 课程 2020-10-09
1 msb002 1.00 1.0 金三银四面试突击班 NaN 2020-10-09
2 msb003 9980.00 1.0 GoLang从入门到精通 课程 2020-01-19
3 msb004 9980.00 NaN 算法与数据结构进阶班 课程 2020-06-30
4 msb005 9.90 1.0 大前端VIP体验营 NaN 2020-03-23
5 msb006 0.02 1.0 零基础速成班HTML+CSS 课程 2020-03-24
6 msb007 2400.00 1.0 操作系统 课程 2020-03-25
7 msb008 1.00 NaN 自定义注解 课程 2020-03-26
8 msb009 2980.00 1.0 多线程与高并发 课程 2020-03-27
9 msb010 1980.00 1.0 科技英语 课程 2020-03-28
10 msb010 1980.00 1.0 科技英语 课程 2020-03-28