个人理解:利用Python数据分析-----算术与数据索引对齐

@[TOC] 个人理解:Python数据分析-----算术与数据索引对齐

写作缘由:使用pandas库的Series与DataFrame时,想到如果索引数或列数不同,且要进行合并或者拆分时会不会出现NaN值并顺带影响后续的计算操作,今学习完算术与数据对齐的章节,分享一下个人的理解。

准备工作

  • 代码示例来源于大名鼎鼎的O’reilly动物的《利用Python进行数据分析》
  • Jupyter notebook
  • 已装好pandas库
  • 对pandas库的Series与DataFrame有基本的理解
  • 500ml水
引入完毕用到的库后,在jupyter notebook创建两个Series对象
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
s1 = pd.Series([7.3, -2.5, 3.4, 1.5],
              index = list('acde')
s2 = pd.Series([-2.1, 3.6, -1.5, 4, 3.1],
              index = ['a', 'c', 'e', 'f', 'g'])

相信不少朋友在一开始添加相应索引的时候都会感到厌烦,index = [‘a’, ‘c’, ‘e’, ‘f’, ‘g’] 这样的写法是在有点消耗青春,其实简简单单的一个list()函数即可自动拆解成单,当然前提是每个索引值都是仅为单(单个字母,单个数字等)
在这里插入图片描述

输出s1,s2的结果为:

这里我把他们放在一起
在这里插入图片描述

将s1与s2对象相加

在这里插入图片描述
下面用纸笔呈现一下我个人的思考过程

在这里插入图片描述

DataFrame

先来回顾一下DataFrame的概念:DataFrame表示的是矩阵的数据表,它包含已排序的列集合,每一列可以实不同的值类型(数值,字符串,布尔值等)。DataFrame既有行索引也有列索引,它可以被视为一个共享相同索引的Series的字典。在DataFrame中,数据被存储为一个以上的二维块,而不是列表、字典或其他一维数组的集合。
尽管DataFrame是二维的,但我们依然可以利用分层索引在DataFrame中展现更高维度的数据,分层索引是pandas中一种更为高级的数据处理特性,所以在这里更推荐使用jupyter notebook,能产生友好的html表格!!

先创建两个DataFrame对象
df1 = pd.DataFrame(np.arange(9.).reshape((3,3)), columns = list('bcd'), 
                   # 这样写columns与index索引简便多了,巧用list()列表函数
                  index = ['Ohio', 'Texas', 'Colorado'])

df2 = pd.DataFrame(np.arange(12.).reshape((4,3)), columns = list('bde'),
                  index = ['Utah', 'Ohio', 'Texas', 'Oregon'])

当然,用上刚刚聊到的list()拆分单个索引的方法哈

相加得

在这里插入图片描述
因为DataFrame是一个以上的二维块,所以我在刚开始理解的时候有点卡壳,所以喝了100ml水后,再次动用纸笔。理解如下

在这里插入图片描述
因为DataFrame会为不是共有的列或行创建“列或行”,就像Series那样,只不过创建后的值都是NaN,所以我们在理解初期可以试着列一下
z在这里插入图片描述
再对比一下jupyter notebook的生成结果
在这里插入图片描述
看来就是对了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值