当前位置: 首页 > news >正文

pandas之数据处理

首先,数据加载

pandas提供了一些用于将表格型数据读取为DataFrame对象的函数,期中read_csv和read_table这两个使用最多。

1、删除重复元素

使用duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True。

- keep参数:指定保留哪一重复的行数据
- True 重复的行
  • 创建具有重复元素行的DataFrame
from pandas import Series,DataFrame
import numpy as np
import pandas as pd

#创建一个df
np.random.seed(10)
df = DataFrame(data=np.random.randint(0,100,size=(3,5)),index=['A','B','C'],columns=['a','b','c','d','e'])
df
# 

a    b    c    d    e
A    9    15    64    28    89
B    93    29    8    73    0
C    40    36    16    11    54

df.loc['B'] = ['22','22','22','22','22']
df.loc['C'] = ['22','22','22','22','22']
df
#

a    b    c    d    e
A    9    15    64    28    89
B    22    22    22    22    22
C    22    22    22    22    22
  • 使用duplicated查看所有重复元素行

使用drop_duplicates()函数删除重复的行

  • drop_duplicates(keep='first/last'/False)

2. 映射:指定替换

1) replace()函数:替换元素

 

使用replace()函数,对values进行映射操作

Series替换操作

  • 单值替换
    • 普通替换
    • 字典替换(推荐)
  • 多值替换
    • 列表替换
    • 字典替换(推荐)
  • 参数
    • to_replace:被替换的元素

单值普通替换

eplace参数说明:

  • method:对指定的值使用相邻的值填充替换
  • limit:设定填充次数

DataFrame替换操作

  • 单值替换
    • 普通替换: 替换所有符合要求的元素:to_replace=15,value='e'
    • 按列指定单值替换: to_replace={列标签:替换值} value='value'
  • 多值替换
    • 列表替换: to_replace=[] value=[]
    • 字典替换(推荐) to_replace={to_replace:value,to_replace:value}

2) map()函数:新建一列 , map函数并不是df的方法,而是series的方法

  • map是Series的一个函数
  • map()可以映射新一列数据
  • map()中可以使用lambd表达式
  • map()中可以使用方法,可以是自定义的方法

    eg:map({to_replace:value})

  • 注意 map()中不能使用sum之类的函数,for循环
 

 

注意:并不是任何形式的函数都可以作为map的参数。只有当一个函数具有一个参数且有返回值,那么该函数才可以作为map的参数。

回到顶部

3. 使用聚合操作对数据异常值检测和过滤

回到顶部

4. 排序

使用.take()函数排序

- take()函数接受一个索引列表,用数字表示,使得df根据列表中索引的顺序进行排序
- eg:df.take([1,3,4,2,5]) 

可以借助np.random.permutation()函数随机排序

 

 

随机抽样

当DataFrame规模足够大时,直接使用np.random.permutation(x)函数,就配合take()函数实现随机抽样

回到顶部

5. 数据分类处理

数据聚合是数据处理的最后一步,通常是要使每一个数组生成一个单一的数值。

数据分类处理:

  • 分组:先把数据分为几组
  • 用函数处理:为不同组的数据应用不同的函数以转换数据
  • 合并:把不同组得到的结果合并起来

数据分类处理的核心:

 - groupby()函数
 - groups属性查看分组情况
 - eg: df.groupby(by='item').groups

分组

 

转载于:https://www.cnblogs.com/qq631243523/p/10504787.html

相关文章:

  • windows上配置mysql主从复制
  • C/C++每日小练(七)——墓地雕塑
  • Springboot- Spring缓存抽象学习笔记
  • 讲一讲垃圾回收算法
  • virtualbox 迁移虚拟机存储位置
  • 程序员面试时用中文命名写白板代码的好处
  • 019_对 100 以内的所有正整数相加求和(1+2+3+4...+100)
  • 位运算三大算法
  • Python(86)_if语句
  • 架构小谈之美团外卖
  • 【BZOJ2870】最长道路
  • C#-设计模式-观察者模式
  • Java基础内部类、包的声名、访问修饰符、代码块整理
  • c/c++ 网络编程 read,write函数深入理解
  • DevExpress WinForms使用教程:SVG图库和Image Picker
  • 【347天】每日项目总结系列085(2018.01.18)
  • in typeof instanceof ===这些运算符有什么作用
  • js
  • laravel 用artisan创建自己的模板
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • NSTimer学习笔记
  • python学习笔记-类对象的信息
  • Python学习之路13-记分
  • 欢迎参加第二届中国游戏开发者大会
  • 爬虫模拟登陆 SegmentFault
  • 中文输入法与React文本输入框的问题与解决方案
  • Spring第一个helloWorld
  • 阿里云ACE认证之理解CDN技术
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • "无招胜有招"nbsp;史上最全的互…
  • # 数论-逆元
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #162 (Div. 2)
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (六)激光线扫描-三维重建
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)详解PHP处理密码的几种方式
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .NET 事件模型教程(二)
  • .php文件都打不开,打不开php文件怎么办
  • ::
  • ::前边啥也没有
  • ??myeclipse+tomcat
  • [ C++ ] STL---仿函数与priority_queue
  • []常用AT命令解释()
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [Django 0-1] Core.Checks 模块
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具