1:删除重复数据

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

>>> df =DataFrame(np.random.randint(0,150,size=(6,3)),columns=['Chinese','maths','Chinese'],index=['zhangsan','lisi','wangwu','lisi','xiaowu','zhangsan'])

>>> df

Chinese  maths  Chinese

zhangsan       17     58       70

lisi           88     20      137

wangwu        130     29       57

lisi           71     20       65

xiaowu        133     60        6

zhangsan       96     48       60

>>> df.duplicated()

zhangsan    False

lisi        False

wangwu      False

lisi        False

xiaowu      False

zhangsan    False

dtype: bool

>>> df =DataFrame(np.random.randint(0,2,size=(6,2)),columns=['Chinese','maths'],index=['zhangsan','lisi','wangwu','lisi','xiaowu','zhangsan'])

>>> df

Chinese  maths

zhangsan        1      1

lisi            1      0

wangwu          0      0

lisi            1      0

xiaowu          1      1

zhangsan        0      0

>>> df.duplicated ()

zhangsan    False

lisi        False

wangwu      False

lisi         True

xiaowu       True

zhangsan     True

dtype: bool

>>> #如果出现的数据一样,则会返回true

>>> #调用drop_duplicates()可以删除重复的数据

>>> df.drop_duplicates ()

Chinese  maths

zhangsan        1      1

lisi            1      0

wangwu          0      0

>>> #删除的是行

>>> #rename()函数替换索引

>>> #map():新建一列

>>> #replace()替换元素

2:异常值检测和过滤

>>> #使用describe()函数查看每一列的描述统计量

>>> df =DataFrame(np.random.randint(0,150,size=(6,2)),columns=['Chinese','maths'],index=[list('ABCDEF')])

>>> df

Chinese  maths

A      119     25

B       28     33

C       10    134

D       44    121

E       44    119

F       91     46

>>> df.describe ()

Chinese       maths

count    6.000000    6.000000

mean    56.000000   79.666667#平均值

std     40.943864   50.014665

min     10.000000   25.000000

25%     32.000000   36.250000

50%     44.000000   82.500000

75%     79.250000  120.500000

max    119.000000  134.000000

>>> #std是标准方差

>>> df.std ()

Chinese    40.943864

maths      50.014665

dtype: float64

>>> df.std(axis=1)

A    66.468037

B     3.535534

C    87.681241

D    54.447222

E    53.033009

F    31.819805

dtype: float64

>>> #每个人的标准差

>>> np.abs(df)>df.std()*2

Chinese  maths

A     True  False

B    False  False

C    False   True

D    False   True

E    False   True

F     True  False

>>> #当某个方差大于标准方差的2倍时认为这两个数特殊,返回true,这时筛选出来

>>> df.any(axis=1)

A    True

B    True

C    True

D    True

E    True

F    True

dtype: bool

>>> df2=np.abs(df)>df.std()*2

>>> df3=df2.any(axis=1)

>>> df[df3]

Chinese  maths

A      119     25

C       10    134

D       44    121

E       44    119

F       91     46

>>> df2=np.abs(df)>df.std()*2

>>> df2

Chinese  maths

A     True  False

B    False  False

C    False   True

D    False   True

E    False   True

F     True  False

>>> df2.any()

Chinese    True

maths      True

dtype: bool

>>> df2.all()

Chinese    False

maths      False

dtype: bool

>>> df3=df2.any(axis=1)

>>> df3

A     True

B    False

C     True

D     True

E     True

F     True

dtype: bool

>>> df[df3]

Chinese  maths

A      119     25

C       10    134

D       44    121

E       44    119

F       91     46

3:随机排序

>>> x=np.random.permutation (6)

>>> x

array([4, 5, 1, 0, 3, 2])

>>> df.take(x)

Chinese  maths

E       44    119

F       91     46

B       28     33

A      119     25

D       44    121

C       10    134

>>> #使用take(函数排序,可以借助np.random.pemutation()函数随机排序,可以用来随机抽样

4:数据聚合

>>> #通常是每一个数组生成一个具体的值

>>> #1分组 2用函数处理  3合并

>>> #核心函数groupby()

>>> df = DataFrame({'item':['apple','banana','orange','banana','orange','apple'],'price':[4,3,3,2.5,4,2],'color':['red','yellow','yellow','green','green','green']})

>>> df

color    item  price

0     red   apple    4.0

1  yellow  banana    3.0

2  yellow  orange    3.0

3   green  banana    2.5

4   green  orange    4.0

5   green   apple    2.0

>>> df.groupby('item')

<pandas.core.groupby.DataFrameGroupBy object at 0x000000000E8EE240>

>>> g=df.groupby('item')

>>> g

<pandas.core.groupby.DataFrameGroupBy object at 0x000000000E76A828>

>>> g.groups

{'orange': Int64Index([2, 4], dtype='int64'), 'apple': Int64Index([0, 5], dtype='int64'), 'banana': Int64Index([1, 3], dtype='int64')}

>>> #分组

>>> g['price'].mean ()

item

apple     3.00

banana    2.75

orange    3.50

Name: price, dtype: float64

>>> m=g['price'].mean ()

>>> type(m)

<class 'pandas.core.series.Series'>

>>> df_mean=DataFrame(m)

>>> df_mean

price

item

apple    3.00

banana   2.75

orange   3.50

>>> pd.merge(df,df_mean,left_on='item',right_index=True)

color    item  price_x  price_y

0     red   apple      4.0     3.00

5   green   apple      2.0     3.00

1  yellow  banana      3.0     2.75

3   green  banana      2.5     2.75

2  yellow  orange      3.0     3.50

4   green  orange      4.0     3.50

>>> #以多个属性进行分组

>>> df.groupby(['color','item']).sum()

price

color  item

green  apple     2.0

banana    2.5

orange    4.0

red      apple     4.0

yellow  banana    3.0

orange    3.0

>>> #最终变成了多重索引结构

pandas基础(3)_数据处理的更多相关文章

  1. pandas基础(2)_多重索引

    1:多重索引的构造 >>> #下面显示构造pd.MultiIndex >>> df1=DataFrame(np.random.randint(0,150,size= ...

  2. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  3. python学习_数据处理编程实例(二)

    在上一节python学习_数据处理编程实例(二)的基础上数据发生了变化,文件中除了学生的成绩外,新增了学生姓名和出生年月的信息,因此将要成变成:分别根据姓名输出每个学生的无重复的前三个最好成绩和出生年 ...

  4. Pandas基础学习与Spark Python初探

    摘要:pandas是一个强大的Python数据分析工具包,pandas的两个主要数据结构Series(一维)和DataFrame(二维)处理了金融,统计,社会中的绝大多数典型用例科学,以及许多工程领域 ...

  5. 利用Python进行数据分析(12) pandas基础: 数据合并

    pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...

  6. 利用Python进行数据分析(9) pandas基础: 汇总统计和计算

    pandas 对象拥有一些常用的数学和统计方法.   例如,sum() 方法,进行列小计:   sum() 方法传入 axis=1 指定为横向汇总,即行小计:   idxmax() 获取最大值对应的索 ...

  7. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  8. numpy&pandas基础

    numpy基础 import numpy as np 定义array In [156]: np.ones(3) Out[156]: array([1., 1., 1.]) In [157]: np.o ...

  9. C#_02.16_基础七_.NET表达式&运算符

    C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...

随机推荐

  1. 【题解】[SCOI2010]股票交易

    十分普通的DP+不平凡的转移 传送门 这道题状态十分明显.转移是\(O(n^4)\)的,过不去,我们需要优化. 一个十分显然的DP是\(f(i,j)\)表示第\(i\)天时候拥有\(j\)单位股票的最 ...

  2. Java中Iterator的fast-fail分析

    1.fail-fast简介 fail-fast机制是java集合(Collection)中的一个错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个线 ...

  3. centos下安装nodejs及websocket

    软件环境: VMware Workstation CentOS 6.5 NodeJS v0.12.5 安装过程: Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安 ...

  4. python优缺点小结

    优点:  1.语言简洁优美 例如去除了大括号,写法简单,写法更接近于英语,其他语言几十上百行的代码,十来行就能解决,而且还好看 2.跨平台,window.linux.mac通用 3.排行高,社区完善 ...

  5. 排序List集合

    这两天写代码过程中遇到一个需求,需要按照某个字段排序List集合,自己实现了一半,发现网上有个更好的版本,就采用了这个,记录下来. 使用这个工具类要注意一个就是 如果你按照age 字段排序,那么age ...

  6. 计算机中丢失OPENGL.dll

    开发OpenGL项目时,在VS开发环境下可能会出现如图所示的错误. 在c:\windows\system32和SysWow64文件夹下存在opengl32.dll,此时,所写程序能够正常编译,但是,程 ...

  7. python- 常见算法 python内置模块

    1.冒泡排序 需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序 原理:相邻两个值进行比较,将较大的值放在右侧,依次比较! li=[39,11,43,88,765,9]for ...

  8. sphinx 全文搜索引擎

    sphinx的安装与配置 --------------------------------------------------------------------------------------- ...

  9. 跨线程send message

    今天同事问了一个问题,说在线程中send message 和直接调用是不是一样,他觉得是一样的,但是线程跟踪却发现处理过程是在接收消息队列完成.回家看到博客园上的一番争论才有些明白,这里贴出来,共勉 ...

  10. appium 支持输入中文

    加入: desired_caps['unicodeKeyboard'] = True desired_caps['resetKeyboard'] = True 使用输入中文: input_txt = ...