侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

技术  /  管理员 发布于 7年前   172

如下所示:

# -*-coding:utf-8-*-from pandas import DataFrameimport pandas as pdimport numpy as np""" 获取行列数据"""df = DataFrame(np.random.rand(4, 5), columns=['A', 'B', 'C', 'D', 'E'])print dfprintdf['col_sum'] = df.apply(lambda x: x.sum(), axis=1) # 横向求和,axis=1表示横向df.loc['row_sum'] = df.apply(lambda x: x.sum()) # loc获取一整列的数据,对一列数据进行求和print dfprintdd = pd.DataFrame(np.arange(0, 60, 2).reshape(10, 3), columns=list('abc'))# loc获取一整列的数据print ddprintprint dd.loc[0:len(dd), 'a']printprint dd.loc[0:3, ['a', 'b']]printprint 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, DataFramedata = DataFrame({'k': [1, 1, 2, 2]})print dataprint type(data) # <class 'pandas.core.frame.DataFrame'>printisduplicates = data.duplicated() # duplicated()判断是否是重复的项print isduplicatesprint type(isduplicates) # <class 'pandas.core.series.Series'>printdata = data.drop_duplicates() # drop_duplicates()移除重复的项print dataprint type(data) # <class 'pandas.core.frame.DataFrame'>print '-------------------------------------------------'""" Pandas.DataFrame 读取、合并、修改列数据、新增列、分组、分组数据计算"""import numpy as npimport pandas as pdfrom pandas import Series, DataFramefrom datetime import timedelta, datetimefrom dateutil.parser import parse""" 读写csv文件"""# 读取csv文件df = pd.read_csv('data_english.csv', encoding='gbk')# print dfprint 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 npimport pandas as pddata1 = 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 data1print data2print 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 dataprint data.unstack() # 轴向旋转print '---------------------------------'""" 数据转换"""data = pd.DataFrame({'a': [1, 3, 3, 4], 'b': [1, 3, 3, 5]})print dataprint 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,全部替换成数据2print data.replace([1, 4], np.nan) # 凡是数据1,4,全部替换成np.nan""" 数据分段"""data = [11, 15, 18, 20, 25, 26, 27, 24]bins = [15, 20, 25]print dataprint pd.cut(data, bins)

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


  • 上一条:
    pandas值替换方法
    下一条:
    Flask框架实现给视图函数增加装饰器操作示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客