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

版权声明:原创文章,欢迎转载,请注明出处,谢谢 https://blog.csdn.net/weixin_43329700/article/details/86893714

@[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的生成结果
在这里插入图片描述
看来就是对了。

猜你喜欢

转载自blog.csdn.net/weixin_43329700/article/details/86893714