利用python进行数据分析第八章学习笔记

第8章,数据规整:聚合、合并和重聚

8.1层次化索引(hierarchical indexing)
通俗易懂点就是设置多列索引,能使你在单个轴上设置多个索引。抽象点来说,就是能使你以低维度形式处理高纬度数据。

data = pd.Series(np.random.randn(9), index=[['a', 'a', 'a', 'b', 'b', 'b, 'c', 'c', 'c'],
[1,2,3,4,5,6,7,8,9]])

每个轴都有分层索引

frame = pd.DataFrame(np.arange(12).reshape((4, 3)),
                     index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
                     columns=[['Ohio', 'Ohio', 'Colorado'],
                              ['Green', 'Red', 'Green']])

各层都可以有名字

frame.index.names = ['key1', 'key2']
frame.columns.names = ['state', 'color']

有了部分索引就可以轻松的选取列分组

frame['Ohio']

重排与分级排序
如果你需要调整某条轴上各级别的排序,或指定级别上的值对数据进行排序。可以使用swaplevel():

frame.swaplevel('key1', 'key2')

而sort_index则根据单个级别中的值对数据进行排序。

frame.sort_index(level=1)

根据级别汇总统计
例如:

frame.sum(level='key2')

使用DataFrame列进行索引
运用set_index()会将其一个或多个列转为行索引,通常那些列会默认消除,可以调用参数drop=False保留下来。
而reset_index()则和set_index相反,层次化索引的级别会被转移到列里面。

8.2合并数据集
主要有三种方法,pandas.merge(), join(), pandas.concat()。
pandas.merge可根据⼀个或多个键将不同DataFrame中的连接起来。
pandas.concat可以沿着⼀条轴将多个对象堆叠到⼀起。
实例⽅法combine_first可以将重复数据编接在⼀起,⽤⼀个对象中的值填充另⼀个对象中的缺失值。
默认情况下,merge做的是“内连接”;结果中的键是交集。其他⽅式还有"left"、“right"以及"outer”。

inner:使用两个表都有的键。
left:使用左表有的键。
right:使用右表有的键。
outer:使用两个表都有的键。
注意使用merge的时候多对多返回的是笛卡儿积。
对重复的列名处理可以使用suffixes参数。
还有一些其他参数:
left_on:左侧DataFrame中用作链接键的列。
right_on:类似left_on。
left_index:将左侧的行索引用作链接键。
right_index:类似left_index。

索引上的合并
有时候,DataFrame中的连接键位于其索引中。在这种情况下,你可以传⼊left_index=True或right_index=True(或两个都传)以说明索引应该被⽤作连接键。

DataFrame的join⽅法默认使⽤的是左连接,保留左边表的⾏索引。它还⽀持在调⽤的DataFrame的列上,连接传递的DataFrame索引。

轴向连接
Numpy有concatenation函数,可以指定轴进行连接。
pandas的concat函数可以将值和索引粘合一起,默认情况下,concat是在axis=0上工作的,最终产生一个新的Series,如果传入axis=1,则产生一个DataFrame。而在concat函数里的keys参数可以创建一个层次化索引。也可以传入字典代替列表,字典的键会被当做keys的选项值。除此之外,names参数可以管理层次化索引,命名创建的轴级别。传入ignore_index=True则会连续行索引。join_axes可以指明轴的索引,不执行并集或交集。

合并重叠数据
可以使用where进行合并数据或者Series的combine_first方法。
例如:

Data1.combine_first(data2)

8.3 重塑和轴向旋转
有许多⽤于重新排列表格型数据的基础运算。这些函数也称作重塑(reshape)或轴向旋转(pivot)运算。
重塑层次化索引
stack():将数据的列旋转为行,得到一个Series。
unstack():将数据的行旋转为列,得到一个DataFrame。
传⼊分层级别的编号或名称即可对其它级别进⾏unstack操作。
stack默认会滤除缺失数据,因此该运算是可逆的,可以调入参数dropna=False,显示缺失参数。

将“⻓格式”旋转为“宽格式
pivot就是⽤set_index创建层次化索引,再⽤unstack重塑。

将“宽格式”旋转为“⻓格式
旋转DataFrame的逆运算是pandas.melt。它不是将⼀列转换到多个新的DataFrame,⽽是合并多个列成为⼀个,产⽣⼀个⽐输⼊⻓的DataFrame。使⽤pivot,可以重塑回原来的样⼦。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值