惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
C
Check Point Blog
博客园_首页
B
Blog
D
Docker
U
Unit 42
量子位
I
InfoQ
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
GbyAI
GbyAI
L
LangChain Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
美团技术团队
T
The Blog of Author Tim Ferriss
阮一峰的网络日志
阮一峰的网络日志
月光博客
月光博客
Vercel News
Vercel News
Recent Announcements
Recent Announcements
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Google DeepMind News
Google DeepMind News

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
pandas缺失值处理检测isnull、删除dropna、填充fillna-互联网...
2020-11-20 · via 老董笔记

  有些excel文件不标准,比如空行、有些单元格没有值等,这类情况我们称为缺失值。对于缺失值,我们往往会做三步走的处理,1检测缺失值,2丢弃一些缺失值,3填充一些缺失值

  1、isnull和notnull

  检测是否为空,适用于

# -*- coding: utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
print(df)
print('------------------')
print(df.loc[df['分数'].notnull()])

   Unnamed: 0   姓名   科目    分数  性别
0         NaN   小王   数学  87.0 NaN
1         NaN   小王   语文   NaN NaN
2         NaN  NaN   英语  89.0 NaN
3         NaN   小张   数学  95.0 NaN
4         NaN  NaN  NaN   NaN NaN
5         NaN   小张   语文  96.0 NaN
6         NaN   小张   英语  97.0 NaN
7         NaN  NaN   数学  50.0 NaN
8         NaN   小龙   语文  51.0 NaN
9         NaN   小龙   英语  52.0 NaN
------------------
   Unnamed: 0   姓名  科目    分数  性别
0         NaN   小王  数学  87.0 NaN
2         NaN  NaN  英语  89.0 NaN
3         NaN   小张  数学  95.0 NaN
5         NaN   小张  语文  96.0 NaN
6         NaN   小张  英语  97.0 NaN
7         NaN  NaN  数学  50.0 NaN
8         NaN   小龙  语文  51.0 NaN
9         NaN   小龙  英语  52.0 NaN


  2、dropna 删除缺失值,主要了解3个参数

  axis:0 or ‘index’, 1 or ‘columns’

  how:any有一个缺失值就drop that row or column,‘all’ 所有值是缺失值才drop that row or column.

  inpalce:bool, default False

# -*- coding: utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
print(df)
print('------------------')
# 删除空列
df.dropna(axis=1,how='all',inplace=True)
print(df)
print('------------------')
# 删除空行
df.dropna(axis=0,how='all',inplace=True)
print(df)

   Unnamed: 0   姓名   科目    分数  性别
0         NaN   小王   数学  87.0 NaN
1         NaN   小王   语文   NaN NaN
2         NaN  NaN   英语  89.0 NaN
3         NaN   小张   数学  95.0 NaN
4         NaN  NaN  NaN   NaN NaN
5         NaN   小张   语文  96.0 NaN
6         NaN   小张   英语  97.0 NaN
7         NaN  NaN   数学  50.0 NaN
8         NaN   小龙   语文  51.0 NaN
9         NaN   小龙   英语  52.0 NaN
------------------
    姓名   科目    分数
0   小王   数学  87.0
1   小王   语文   NaN
2  NaN   英语  89.0
3   小张   数学  95.0
4  NaN  NaN   NaN
5   小张   语文  96.0
6   小张   英语  97.0
7  NaN   数学  50.0
8   小龙   语文  51.0
9   小龙   英语  52.0
------------------
    姓名  科目    分数
0   小王  数学  87.0
1   小王  语文   NaN
2  NaN  英语  89.0
3   小张  数学  95.0
5   小张  语文  96.0
6   小张  英语  97.0
7  NaN  数学  50.0
8   小龙  语文  51.0
9   小龙  英语  52.0


  3、fillna 填充缺失值,主要了解2个参数

  value:填充的值,可以是单个值,可以是字典(key为列名,value是值)

  method:等于ffill则使用前一个不为空的值填充,等于bfill使用后一个不为空的值填充

# -*- coding: utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
print(df)
print('------------------')
df.loc[:,'分数'] = df['分数'].fillna(100)
"""
等价于df.fillna({'分数':100})
"""
print(df)

   Unnamed: 0   姓名   科目    分数  性别
0         NaN   小王   数学  87.0 NaN
1         NaN   小王   语文   NaN NaN
2         NaN  NaN   英语  89.0 NaN
3         NaN   小张   数学  95.0 NaN
4         NaN  NaN  NaN   NaN NaN
5         NaN   小张   语文  96.0 NaN
6         NaN   小张   英语  97.0 NaN
7         NaN  NaN   数学  50.0 NaN
8         NaN   小龙   语文  51.0 NaN
9         NaN   小龙   英语  52.0 NaN
------------------
   Unnamed: 0   姓名   科目     分数  性别
0         NaN   小王   数学   87.0 NaN
1         NaN   小王   语文  100.0 NaN
2         NaN  NaN   英语   89.0 NaN
3         NaN   小张   数学   95.0 NaN
4         NaN  NaN  NaN  100.0 NaN
5         NaN   小张   语文   96.0 NaN
6         NaN   小张   英语   97.0 NaN
7         NaN  NaN   数学   50.0 NaN
8         NaN   小龙   语文   51.0 NaN
9         NaN   小龙   英语   52.0 NaN



# -*- coding: utf-8 -*-
import pandas as pd

df = pd.read_excel('test.xlsx')
print(df)
print('------------------')


# index索引0到6用上面单元格的值填充
df.loc[0:6,'姓名'] = df['姓名'].fillna(method='ffill')
# index索引7到最后用下面单元格的值填充
df.loc[7:,'姓名'] = df['姓名'].fillna(method='bfill')
# 缺失的分数设为100
df.loc[:,'分数'] = df['分数'].fillna(100)
"""
等价于df.fillna({'分数':100})
"""
print(df)

   Unnamed: 0   姓名   科目    分数  性别
0         NaN   小王   数学  87.0 NaN
1         NaN   小王   语文   NaN NaN
2         NaN  NaN   英语  89.0 NaN
3         NaN   小张   数学  95.0 NaN
4         NaN  NaN  NaN   NaN NaN
5         NaN   小张   语文  96.0 NaN
6         NaN   小张   英语  97.0 NaN
7         NaN  NaN   数学  50.0 NaN
8         NaN   小龙   语文  51.0 NaN
9         NaN   小龙   英语  52.0 NaN
------------------
   Unnamed: 0  姓名   科目     分数  性别
0         NaN  小王   数学   87.0 NaN
1         NaN  小王   语文  100.0 NaN
2         NaN  小王   英语   89.0 NaN
3         NaN  小张   数学   95.0 NaN
4         NaN  小张  NaN  100.0 NaN
5         NaN  小张   语文   96.0 NaN
6         NaN  小张   英语   97.0 NaN
7         NaN  小龙   数学   50.0 NaN
8         NaN  小龙   语文   51.0 NaN
9         NaN  小龙   英语   52.0 NaN


很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会