美文网首页呆鸟的Python数据分析
pandas学习总结------数据索引和数据整理

pandas学习总结------数据索引和数据整理

作者: 九日照林 | 来源:发表于2019-08-25 18:17 被阅读0次
import numpy as numpy
import pandas as pd
pd.options.display.max_rows = 20
numpy.random.seed(12345)
import matplotlib.pyplot as plt
plt.rc('figure', figsize=(10, 6))
numpy.set_printoptions(precision=4, suppress=True)

在数据分析中,总是需要进行各种各样的数据清洗和转换,如果能用好pandas本身内置的方法和技巧,使用起来事半功倍。

分层索引

创建分层索引的方式

创建一个分层索引最简单的方式就是在创建dataframe的时候在index参数里面传入一个层叠列表,这样就会产生多层索引。
比如下面

df=pd.DataFrame(numpy.random.randn(18).reshape(6,3),index=[['a', 'b', 'a', 'b', 'c', 'c'], [1,2,3]*2])
df

多层索引的方式

一般来说pandas可以用两种索引方式:位置索引名字索引,对应的就是ilocloc,不管是前者还是后者,都只接受两个参数[行对应的信息, 列对应的信息]。如果是多层索引的话,就是要传入一个元组列表去索引。

df.loc[[('a', 1), ('a', 3), ('b', 1)],0]

查看索引方式

df.index

我们可以对索引进行重新命名和指定按照哪一层级进行排序。

按照层级进行排序,加和

我们可以在一些统计方法比如sumsort_index传入level的参数,可以是名字也可以是数字。

df.sum(level=0)
df.sum(level=1)

排序

df.sort_index(level='key1')

数据清洗与准备

缺失值

处理方法


扫描宝文档创建于2019年8月25日 下午5_43_53

在判断某一行是否具有缺失值的时候注意可以结合anysum方法进行联合判断出所有都是缺失值或者存在缺失值的行。类似的在dropna中可以传入how参数为any或者all来指定丢弃的方式。

df.head()
df[df.isnull().any(1)]
df[df.isnull().all(1)]

重命名索引或者列标签名

使用rename方法,里面传入一个字典即可,字典里面既可以是值,也可以是对应的函数方法。

data = pd.DataFrame(numpy.arange(12).reshape((3, 4)),
                    index=['Ohio', 'Colorado', 'New York'],
                    columns=['one', 'two', 'three', 'four'])
data.head()

我们在这里如果是对索引['Ohio', 'Colorado', 'New York']都进行小写化,而对应的列名['one', 'two', 'three', 'four']进行首字母大写化。我们可以这么实现:

data.rename(index=lambda x:x.lower(), columns=str.upper)

如果不是要进行函数处理,而是对应去替换值,那就传入一个字典去替换。

data.rename(index={'OHIO': 'INDIANA'},
            columns={'three': 'peekaboo'})

离散化和分箱

分箱有3个重要参数可以关注下。

参数名 对应的功能
labels 对应分箱的名
precision 精确度
right/left 是否包括右边界和左边界
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
group_names = ['Youth', 'YoungAdult', 'MiddleAged', 'Senior']
pd.cut(ages, 4, labels=group_names, precision=2)

随机抽样

numpy.random.permutation可以在给定值下,在值范围内进行随机重排序。

df = pd.DataFrame(numpy.arange(5 * 4).reshape((5, 4)))
sampler = numpy.random.permutation(5)
sampler

dataframe的take方法筛选出对应索引的子集
df
df.take(sampler)

sample方法则可以给定数字,随机抽取对应n个元素

df.sample(3)

相关文章

  • pandas学习总结------数据索引和数据整理

    在数据分析中,总是需要进行各种各样的数据清洗和转换,如果能用好pandas本身内置的方法和技巧,使用起来事半功倍。...

  • pandas 中链式索引 选择数据1

    pandas 中链式索引 选择数据1 链式索引选择数据,示例1 +链式索引选择数据,示例2 链式索引选择数据,示例...

  • Pandas数据结构

    Pandas数据结构 Series 获取数据/索引 预览数据 通过索引获取数据 索引与数据的对应关系仍保持在数组运...

  • pandas学习-2

    Pandas数据结构Series:索引 位置下标 / 标签索引 / 切片索引 / 布尔型索引

  • 2019-02-23

    Pandas 1 熟悉并掌握Pandas中DataFrame和Series两大数据结构 2掌握数据索引的三种方式 ...

  • Pandas.DataFrame中loc、iloc、ix的区别

    ## Pandas中loc iloc ix 区别 loc——通过行标签索引行数据 iloc——通过行号索引行数据 ...

  • ApacheCN Pandas 教程集

    Pandas 秘籍零、前言一、Pandas 基础二、数据帧基本操作三、开始数据分析四、选择数据子集五、布尔索引六、...

  • Python学习之pandas快速入门(三)

    数据结构 索引对象 ·pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。 构建Series或Dat...

  • Pandas数据操作

    Pandas数据操作 Series索引 行索引 切片索引 不连续索引 布尔索引 DataFrame索引 列索引 不...

  • pandas 使用

    1. Series 使用 2. pandas:索引 pandas:数据对齐,相加 3. pandas:DataF...

网友评论

    本文标题:pandas学习总结------数据索引和数据整理

    本文链接:https://www.haomeiwen.com/subject/tfrkectx.html