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的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
简单讲解Python中的数字类型及基本的数学计算
Mar 11 Python
Python中static相关知识小结
Jan 02 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
python合并已经存在的sheet数据到新sheet的方法
Dec 11 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
对Python中实现两个数的值交换的集中方法详解
Jan 11 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
解析Python3中的Import
Oct 13 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
基于python3生成标签云代码解析
Feb 18 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 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导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php文件上传类完整实例
2016/05/14 PHP
PHPExcel简单读取excel文件示例
2016/05/26 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
Ext面向对象开发实践(续)
2008/11/18 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
nodejs实现HTTPS发起POST请求
2015/04/23 NodeJs
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
详解JavaScript调用栈、尾递归和手动优化
2017/06/03 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
python查找第k小元素代码分享
2013/12/18 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
详谈在flask中使用jsonify和json.dumps的区别
2018/03/26 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
详细分析Python collections工具库
2020/07/16 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
教师实习自我鉴定
2013/12/13 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
使用Python开发冰球小游戏
2022/04/30 Python