python填充空值_python dataframe均值填充知识点详解
python dataframe均值填充
pandas 用均值填充缺失值列的技巧
pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样:
for column in list(df.columns[df.isnull().sum() > 0]):
mean_val = df[column].mean()
df[column].fillna(mean_val, inplace=True)
# -------代码分解-------
# 判断哪些列有缺失值,得到series对象
df.isnull().sum() > 0
# output
contributors True
coordinates True
created_at False
display_text_range False
entities False
extended_entities True
favorite_count False
favorited False
full_text False
geo True
id False
id_str False
...
# 根据上一步结果,筛选需要填充的列
df.columns[df.isnull().sum() > 0]
# output
Index(['contributors', 'coordinates', 'extended_entities', 'geo',
'in_reply_to_screen_name', 'in_reply_to_status_id',
'in_reply_to_status_id_str', 'in_reply_to_user_id',
'in_reply_to_user_id_str', 'place', 'possibly_sensitive',
'possibly_sensitive_appealable', 'quoted_status', 'quoted_status_id',
'quoted_status_id_str', 'retweeted_status'],
dtype='object')
python DataFrame 取差集实例
需求:给定一个dataframe和一个list,list中存放的是dataframe中某一列的元素,删除dataframe中与list元素重复的行(即取差集)。
在网上搜了一圈,好像没看到DataFrame中取差集的方式,所以自己写了一个。方法比较繁琐,如果有更简便的方式,请留言。
import pandas as pd
data = [[1,2,3],[2,3,4],[3,4,5],[4,5,6]]
# 创建dataframe,包含a,b,c三列
df = pd.DataFrame(data, columns=['a','b','c'])
print(df)
# a 列中待删除的元素
a_to_drop = [1, 3]
# 找到待删除元素所在的位置,返回的是 true or false 序列
flag = df['a'].isin(a_to_drop)
# 由于我们要取差集,因此对上述序列取反
diff_flag = [not f for f in flag]
# res 为我们所需要的差集
res = df[diff_flag]
# 重置index
res.index = [i for i in range(len(res))]
print(res)
以上这篇python DataFrame 取差集实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。
python dataframe向下向上填充,fillna和ffill的方法
首先新建一个dataframe:
In[8]: df = pd.DataFrame({'name':list('ABCDA'),'house':[1,1,2,3,3],'date':['2010-01-01','2010-06-09','2011-12-03','2011-04-05','2012-03-23']})
In[9]: df
Out[9]:
date house name
0 2010-01-01 1 A
1 2010-06-09 1 B
2 2011-12-03 2 C
3 2011-04-05 3 D
4 2012-03-23 3 A
将date列改为时间类型:
In[12]: df.date = pd.to_datetime(df.date)
数据的含义是这样的,我们有ABCD四个人的数据,已知A在2010-01-01的时候,名下有1套房,B在2010-06-09的时候,名下有1套房,C在2011-12-03的时候,有2套房,D在2011-04-05的时候有3套房,A在2012-02-23的时候,数据更新了,有两套房。
要求在有姓名和时间的情况下,能给出其名下有几套房:
比如A在2010-01-01与2012-03-23期间任意一天,都应该是1套房,在2012-03-23之后,都是3套房。
我们使用pandas的fillna方法,选择ffill。
首先我们获得一个2010-01-01到2017-12-01的dataframe
In[14]: time_range = pd.DataFrame(
pd.date_range('2010-01-01','2017-12-01',freq='D'), columns=['date']).set_index("date")
In[15]: time_range
Out[15]:
Empty DataFrame
Columns: []
Index: [2010-01-01 00:00:00, 2010-01-02 00:00:00, 2010-01-03 00:00:00, 2010-01-04 00:00:00, 2010-01-05 00:00:00, 2010-01-06 00:00:00, 2010-01-07 00:00:00, 2010-01-08 00:00:00, 2010-01-09 00:00:00, 2010-01-10 00:00:00, 2010-01-11 00:00:00, 2010-01-12 00:00:00, 2010-01-13 00:00:00, 2010-01-14 00:00:00, 2010-01-15 00:00:00, 2010-01-16 00:00:00, 2010-01-17 00:00:00, 2010-01-18 00:00:00, 2010-01-19 00:00:00, 2010-01-20 00:00:00, 2010-01-21 00:00:00, 2010-01-22 00:00:00, 2010-01-23 00:00:00, 2010-01-24 00:00:00, 2010-01-25 00:00:00, 2010-01-26 00:00:00, 2010-01-27 00:00:00, 2010-01-28 00:00:00, 2010-01-29 00:00:00, 2010-01-30 00:00:00, 2010-01-31 00:00:00, 2010-02-01 00:00:00, 2010-02-02 00:00:00, 2010-02-03 00:00:00, 2010-02-04 00:00:00, 2010-02-05 00:00:00, 2010-02-06 00:00:00, 2010-02-07 00:00:00, 2010-02-08 00:00:00, 2010-02-09 00:00:00, 2010-02-10 00:00:00, 2010-02-11 00:00:00, 2010-02-12 00:00:00, 2010-02-13 00:00:00, 2010-02-14 00:00:00, 2010-02-15 00:00:00, 2010-02-16 00:00:00, 2010-02-17 00:00:00, 2010-02-18 00:00:00, 2010-02-19 00:00:00, 2010-02-20 00:00:00, 2010-02-21 00:00:00, 2010-02-22 00:00:00, 2010-02-23 00:00:00, 2010-02-24 00:00:00, 2010-02-25 00:00:00, 2010-02-26 00:00:00, 2010-02-27 00:00:00, 2010-02-28 00:00:00, 2010-03-01 00:00:00, 2010-03-02 00:00:00, 2010-03-03 00:00:00, 2010-03-04 00:00:00, 2010-03-05 00:00:00, 2010-03-06 00:00:00, 2010-03-07 00:00:00, 2010-03-08 00:00:00, 2010-03-09 00:00:00, 2010-03-10 00:00:00, 2010-03-11 00:00:00, 2010-03-12 00:00:00, 2010-03-13 00:00:00, 2010-03-14 00:00:00, 2010-03-15 00:00:00, 2010-03-16 00:00:00, 2010-03-17 00:00:00, 2010-03-18 00:00:00, 2010-03-19 00:00:00, 2010-03-20 00:00:00, 2010-03-21 00:00:00, 2010-03-22 00:00:00, 2010-03-23 00:00:00, 2010-03-24 00:00:00, 2010-03-25 00:00:00, 2010-03-26 00:00:00, 2010-03-27 00:00:00, 2010-03-28 00:00:00, 2010-03-29 00:00:00, 2010-03-30 00:00:00, 2010-03-31 00:00:00, 2010-04-01 00:00:00, 2010-04-02 00:00:00, 2010-04-03 00:00:00, 2010-04-04 00:00:00, 2010-04-05 00:00:00, 2010-04-06 00:00:00, 2010-04-07 00:00:00, 2010-04-08 00:00:00, 2010-04-09 00:00:00, 2010-04-10 00:00:00, ...]
[2892 rows x 0 columns]
然后用上上篇博客中提到的pivot_table将原本的df转变之后,与time_range进行merger操作。
In[16]: df = pd.pivot_table(df, columns='name', index='date')
In[17]: df
Out[17]:
house
name A B C D
date
2010-01-01 1.0 NaN NaN NaN
2010-06-09 NaN 1.0 NaN NaN
2011-04-05 NaN NaN NaN 3.0
2011-12-03 NaN NaN 2.0 NaN
2012-03-23 3.0 NaN NaN NaN
In[18]: df = df.merge(time_range,how="right", left_index=True, right_index=True)
然后再进行向下填充操作:
In[20]: df = df.fillna(method='ffill')
最后:
df = df.stack().reset_index()
结果太长,这里就不粘贴了。如果想向上填充,可选择method = 'bfill‘
以上这篇python dataframe向下向上填充,fillna和ffill的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。
以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。
python填充空值_python dataframe均值填充知识点详解相关推荐
- python flask安装_python flask安装和命令详解
Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 ...
- python单例模式解析_Python下简易的单例模式详解
Python 下的单例模式 要点: 1.某个类只能有一个实例: 2.它必须自行创建这个实例: 3.它必须自行向整个系统提供这个实例 方法:重写new函数 应该考虑的情况: 1.这个单例的类可能继承了别 ...
- python清空集合_python集合删除多种方法详解
这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...
- office是python打开方式_Python读取word文本操作详解
本文研究的主要问题时Python读取word文本操作,分享了相关概念和实现代码,具体如下. 一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就 ...
- python中堆排序_Python实现堆排序的方法详解
本文实例讲述了Python实现堆排序的方法.分享给大家供大家参考,具体如下: 堆排序作是基本排序方法的一种,类似于合并排序而不像插入排序,它的运行时间为O(nlogn),像插入排序而不像合并排序,它是 ...
- python text函数_python可视化text()函数使用详解
python可视化text()函数使用详解 这篇文章主要介绍了python可视化text()函数使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...
- 怎么用python统计字数_Python统计字数的思路详解
这篇文章主要介绍了Python 统计字数的思路详解,文中还给大家提供了不借助第三方模块的解决方法,感兴趣的朋友一起看看吧 问题描述: 用 Python 实现函数 count_words(),该函数输入 ...
- python getsize函数_Python getsizeof()和getsize()区分详解
sys.getsizeof() 获取程序中声明的一个整数,存储在变量中的大小,以字节(byte)为单位 import sys print(sys.getsizeof('')) print(sys.ge ...
- python 制作抽奖_python制作抽奖程序代码详解
实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...
最新文章
- unix odbc php 连接sqlserver,Ubuntu下通过unixODBC连接MS SqlServer2005
- 国内第一本律师撰写的海关法律专业书籍-《企业如何应对海关行政处罚》-第五章...
- 希尔伯特著名的第六问题 – 原来麦克斯韦早就有解?
- PHP http_build_query()方法
- C语言-二维数组做函数的参数
- 还有 13 天,苹果就要关上 HTTP 大门了
- MATLAB怎么查找矩阵中所有0的数据并赋值
- unity, 颜色随高度渐变shader
- C语言 函数值传递和址传递 - C语言零基础入门教程
- VMware 上Ubuntu虚拟机(15.1) ping不通物理主机(win10),但windows可以ping通虚拟机的问题解决方法...
- sql mysql assoc和row_mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- 写一段jdbc连oracle的程序java类_并实现数据查询_一段Jdbc连Oracle的程序,并实现数据查询....
- VS2012下创建QT5应用程序
- ESXi添加第三方驱动
- 176.第二高的薪水
- python网页抓取与按键精灵原理一样吗_按键精灵等以GUI接口为基础的程序在爬虫界的地位是怎样的?...
- python常考笔试题
- 嵌入式通过序列号加密总结及flash…
- 你不是菜鸟2:他为什么没过试用期
- 『Java』Zip中Excel文件的解析