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均值填充知识点详解相关推荐

  1. python flask安装_python flask安装和命令详解

    Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 ...

  2. python单例模式解析_Python下简易的单例模式详解

    Python 下的单例模式 要点: 1.某个类只能有一个实例: 2.它必须自行创建这个实例: 3.它必须自行向整个系统提供这个实例 方法:重写new函数 应该考虑的情况: 1.这个单例的类可能继承了别 ...

  3. python清空集合_python集合删除多种方法详解

    这篇文章主要介绍了python集合删除多种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 删除指定的元素 A={'a','c','b','d ...

  4. office是python打开方式_Python读取word文本操作详解

    本文研究的主要问题时Python读取word文本操作,分享了相关概念和实现代码,具体如下. 一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就 ...

  5. python中堆排序_Python实现堆排序的方法详解

    本文实例讲述了Python实现堆排序的方法.分享给大家供大家参考,具体如下: 堆排序作是基本排序方法的一种,类似于合并排序而不像插入排序,它的运行时间为O(nlogn),像插入排序而不像合并排序,它是 ...

  6. python text函数_python可视化text()函数使用详解

    python可视化text()函数使用详解 这篇文章主要介绍了python可视化text()函数使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  7. 怎么用python统计字数_Python统计字数的思路详解

    这篇文章主要介绍了Python 统计字数的思路详解,文中还给大家提供了不借助第三方模块的解决方法,感兴趣的朋友一起看看吧 问题描述: 用 Python 实现函数 count_words(),该函数输入 ...

  8. python getsize函数_Python getsizeof()和getsize()区分详解

    sys.getsizeof() 获取程序中声明的一个整数,存储在变量中的大小,以字节(byte)为单位 import sys print(sys.getsizeof('')) print(sys.ge ...

  9. python 制作抽奖_python制作抽奖程序代码详解

    实现制作抽奖程序,需要认知到我们可以看到一般抽奖程序界面上是有很多按钮的,比如中奖区域,按键开始区域等等,所以我们先要设置界面,然后把这些按钮添加到界面中去,想必这对于学过tkinter的同学应该不难 ...

最新文章

  1. unix odbc php 连接sqlserver,Ubuntu下通过unixODBC连接MS SqlServer2005
  2. 国内第一本律师撰写的海关法律专业书籍-《企业如何应对海关行政处罚》-第五章...
  3. 希尔伯特著名的第六问题 – 原来麦克斯韦早就有解?
  4. PHP http_build_query()方法
  5. C语言-二维数组做函数的参数
  6. 还有 13 天,苹果就要关上 HTTP 大门了
  7. MATLAB怎么查找矩阵中所有0的数据并赋值
  8. unity, 颜色随高度渐变shader
  9. C语言 函数值传递和址传递 - C语言零基础入门教程
  10. VMware 上Ubuntu虚拟机(15.1) ping不通物理主机(win10),但windows可以ping通虚拟机的问题解决方法...
  11. sql mysql assoc和row_mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
  12. 写一段jdbc连oracle的程序java类_并实现数据查询_一段Jdbc连Oracle的程序,并实现数据查询....
  13. VS2012下创建QT5应用程序
  14. ESXi添加第三方驱动
  15. 176.第二高的薪水
  16. python网页抓取与按键精灵原理一样吗_按键精灵等以GUI接口为基础的程序在爬虫界的地位是怎样的?...
  17. python常考笔试题
  18. 嵌入式通过序列号加密总结及flash…
  19. 你不是菜鸟2:他为什么没过试用期
  20. 『Java』Zip中Excel文件的解析

热门文章

  1. 关于人工智能的那点论文
  2. 交换友情链接需要注意哪些问题,友链交换平台有哪些
  3. 除去虚拟目录中的旧版本文件(临时文件下载、归档文件下载)
  4. 毕业设计-基于SpringBoot实验室预约管理系统
  5. 爬虫实战系列(六):selenium获取网抑云《无滤镜》评论
  6. 动态面板的作用和用法
  7. 华为OD机试 - 打印机队列(Python)
  8. jquery怎么实现点击刷新当前页面
  9. 用EXCEL批量获取网页标题的方法
  10. VS一行代码解决C++错误代码4096