Pandas 数据处理,数据清洗详解


Posted in Python onJuly 10, 2018

如下所示:

# -*-coding:utf-8-*-

from pandas import DataFrame
import pandas as pd
import numpy as np

"""
 获取行列数据
"""
df = DataFrame(np.random.rand(4, 5), columns=['A', 'B', 'C', 'D', 'E'])
print df
print

df['col_sum'] = df.apply(lambda x: x.sum(), axis=1) # 横向求和,axis=1表示横向
df.loc['row_sum'] = df.apply(lambda x: x.sum()) # loc获取一整列的数据,对一列数据进行求和

print df
print

dd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list('abc'))

# loc获取一整列的数据
print dd
print
print dd.loc[0:len(dd), 'a']
print
print dd.loc[0:3, ['a', 'b']]
print
print dd.loc[[1, 5], ['b', 'c']]
print '--------------------------------------'

# iloc获取某个位置的元素,或者某个区域的元素
print dd.iloc[1, 1]
print dd.iloc[0:3, [0, 1]]
print dd.iloc[[0, 3, 5], 0:2]
print '--------------------------------------'

"""
 去重函数 drop_duplicates()
"""
from pandas import Series, DataFrame

data = DataFrame({'k': [1, 1, 2, 2]})
print data
print type(data) # <class 'pandas.core.frame.DataFrame'>
print

isduplicates = data.duplicated() # duplicated()判断是否是重复的项
print isduplicates
print type(isduplicates) # <class 'pandas.core.series.Series'>
print

data = data.drop_duplicates() # drop_duplicates()移除重复的项
print data
print type(data) # <class 'pandas.core.frame.DataFrame'>
print '-------------------------------------------------'

"""
 Pandas.DataFrame 读取、合并、修改列数据、新增列、分组、分组数据计算
"""
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
from datetime import timedelta, datetime
from dateutil.parser import parse

"""
 读写csv文件
"""
# 读取csv文件
df = pd.read_csv('data_english.csv', encoding='gbk')
# print df
print type(df) # <class 'pandas.core.frame.DataFrame'>
print df.columns # 所有列的标签
print df.index # 所有行的标签
print df.book_id # 选择某一列,可以使用df.book_id ,也可以使用df['book_id']
print type(df.book_id) # <class 'pandas.core.series.Series'>
print np.array(df.book_id) # 将Series转换为numpy的darray格式
print '---------------------------------------------------------'

# 写入csv文件
# df.to_csv('dat.csv', index=False, encoding='gbk') # index=False表示不把index写入文件

"""
 行列的选取
"""
print df.read_name # 选择一列
print df[:3] # 选择前3行
print df.loc[:, ('read_num', 'read_name')] # df.loc[行标签,列标签]
print df.iloc[2, 4] # df.iloc[行位置,列位置]
print df.ix[2, 4] # df.ix[行位置或行标签,列位置或列标签]

# bool判断
print df[df.read_name == u'山问萍'].head() # 获取符合条件的行列
print df[(df.read_name == u'山问萍') & (df.book == u'植物生理学实验教程')] # 多个条件
print '----------------------------------------------'

"""
 两个df相merge
"""
# pd.concat([df1, df2]) # 两个df的column都一样,index不重复(增加列)
# pd.concat([df1, df2], axis=1) # 两个df的index都一样,column不重复(增加行)

"""
 增加列,删除列,重命名某一列
"""
# df['new_col'] = xxx # 直接增加一列,加到最后一列
# df.insert[1, 'new_col'] # 使用df.insert 插入一列,可以设置这一列的位置
# del df['one_col'] # 直接使用del进行删除,删除某一列
# df = df.rename(columns={'old_name': 'new_name'}) # 重命名某一列
# df = df.rename(columns={'old_name': 'new_name'}, inplace=True)
# print '--------------------------------------------------------'

"""
 apply(): 对dataframe的内容进行批量处理,比循环更快
 map(),
 agg():对分组的结果再分别进行不同的操作
"""

"""
 数据合并
"""
import numpy as np
import pandas as pd

data1 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})
data2 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})
print data1
print data2
print pd.merge(data1, data2, on='level') # 合并,内连接

data3 = pd.DataFrame({'level1': ['a', 'b', 'c', 'd'], 'number': [1, 3, 5, 7]})
data4 = pd.DataFrame({'level2': ['a', 'b', 'c', 'e'], 'number': [2, 3, 4, 5]})
print pd.merge(data3, data4, left_on='level1', right_on='level2')
print pd.merge(data3, data4, left_on='level1', right_on='level2', how='left')
print '----------------------------------------'
"""
 merge参数说明:
  left和right:两个不同的DataFrame
  how:合并的方式-->inner内连接,right右连接,left左连接,outer外连接,默认为inner
  on:用于连接的列索引名称,必须存在于两个DataFrame对象中
  left_on:
  right_on:
  left_index:
  right_index:
  sort:默认为True,将合并的数据进行排序
  suffixes:当列名相同时,合并后,自动添加后缀名称,默认为(_x, _y)
  copy:默认为True,复制数据结构
  indicator:
"""

"""
 重叠数据合并
"""
data3 = pd.DataFrame({'level': ['a', 'b', 'c', 'd'], 'number1': [1, 3, 5, np.nan]})
data4 = pd.DataFrame({'level': ['a', 'b', 'c', 'e'], 'number2': [2, np.nan, 4, 5]})
print data3.combine_first(data4) # 相同标签下的内容优先显示data3的内容,如果某个数据缺失,就用另外一个数据补上

"""
 数据重塑和轴向旋转
 数据重塑:reshape()
 轴向旋转:unstack(),stack()
"""
data = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['a', 'b', 'c', 'd'], index=['wang', 'li', 'zhang'])
print data
print data.unstack() # 轴向旋转
print '---------------------------------'

"""
 数据转换
"""
data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})
print data
print data.duplicated() # 判断是否重复行
print data.drop_duplicates() # 去除重复行

"""
 替换值
"""
data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})
print data.replace(1, 2) # 凡是数据1,全部替换成数据2
print data.replace([1, 4], np.nan) # 凡是数据1,4,全部替换成np.nan

"""
 数据分段
"""
data = [11, 15, 18, 20, 25, 26, 27, 24]
bins = [15, 20, 25]
print data
print pd.cut(data, bins)

以上这篇Pandas 数据处理,数据清洗详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现动态添加类的属性或成员函数的解决方法
Jul 16 Python
跟老齐学Python之玩转字符串(1)
Sep 14 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
python中树与树的表示知识点总结
Sep 14 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
pytorch方法测试详解——归一化(BatchNorm2d)
Jan 15 Python
Python 从attribute到property详解
Mar 05 Python
Python3-异步进程回调函数(callback())介绍
May 02 Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
浅谈Python从全局与局部变量到装饰器的相关知识
Jun 21 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 #Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 #Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 #Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 #Python
python3中函数参数的四种简单用法
Jul 09 #Python
python3学习之Splash的安装与实例教程
Jul 09 #Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 #Python
You might like
谈谈PHP的输入输出流
2007/02/14 PHP
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php实现读取和写入tab分割的文件
2015/06/01 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
js获取当前日期前七天的方法
2015/02/28 Javascript
理解javascript闭包
2015/12/15 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
基于vue组件实现猜数字游戏
2020/05/28 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
python对离散变量的one-hot编码方法
2018/07/11 Python
对Python 语音识别框架详解
2018/12/24 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
html5/css3响应式页面开发总结
2018/10/16 HTML / CSS
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
FORZIERI福喜利中国官网:奢侈品购物梦工厂
2019/05/03 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
2014年房产经纪人工作总结
2014/12/08 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
导游词之扬州大明寺
2019/10/09 职场文书
vue2实现provide inject传递响应式
2021/05/21 Vue.js
python+opencv实现视频抽帧示例代码
2021/06/11 Python
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js