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 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
python实现在windows服务中新建进程的方法
Jun 30 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
Apr 10 Python
便捷提取python导入包的属性方法
Oct 15 Python
python将list转为matrix的方法
Dec 12 Python
python 获取图片分辨率的方法
Jan 08 Python
关于python多重赋值的小问题
Apr 17 Python
Python pandas库中的isnull()详解
Dec 26 Python
python可视化text()函数使用详解
Feb 11 Python
Python 实现向word(docx)中输出
Feb 13 Python
jenkins+python自动化测试持续集成教程
May 12 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利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php post换行的方法
2020/02/03 PHP
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
简单实现js浮动框
2016/12/13 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
Bootstrap Table使用整理(二)
2017/06/09 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
vue路由中前进后退的一些事儿
2019/05/18 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
Ellos丹麦:时尚和服装在线
2016/09/19 全球购物
Andrew Marc官网:设计师外套的领先制造商
2019/10/30 全球购物
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
架构师岗位职责
2013/11/18 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
个人委托书范文
2015/01/28 职场文书
安阳殷墟导游词
2015/02/10 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers