首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Pandas 数据分析第 六 集

Pandas 数据分析第 六 集

作者头像
double
发布2020-12-17 16:30:09
发布2020-12-17 16:30:09
6660
举报
文章被收录于专栏:算法channel算法channel

Python与算法社区

447 篇原创,干货满满

三步加星标

01

02

03

三步加星标

你好,我是 zhenguo

Pandas 使用技巧最近连载 5 篇,是时候分析一下它的基本框架。Pandas 使用行索引和列标签表达和分析数据,分别对应 axis=0, axis=1,行索引、列标签带来一些便捷的功能。

如果玩Pandas,还没有注意到对齐 alignment,这个特性,那该好好看看接下来的分析。

基于行索引的对齐,与基于列标签的对齐,原理是一致的,它们其实相当于字典的 key,起到对齐数据作用。但是,这种说法抽象了些,没有例子不好想象出对齐的作用。

下面使用前几天推荐你的 9 个小而经典的数据集,里的 google app store 这个小而经典的数据集,重点分析“行对齐”功能,理解它后,列对齐也自然理解。

导入包:

代码语言:javascript
复制
import pandas as pd 
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns

版本号:

代码语言:javascript
复制
print(pd.__version__)
print(np.__version__)
print(sns.__version__)

1.0.1
1.18.1
0.11.0

导入数据:

代码语言:javascript
复制
df = pd.read_csv('kaggle-data/googleplaystore.csv')
df.head(3)

剔除一些异常数据后得到 df_normal,根据 Rating 为每个 app 排名

代码语言:javascript
复制
rank = df_normal.Rating.rank(method='min',na_option='bottom',ascending=False)
rank.head(3)

method 参数指定:Rating 值相等时排名取小,na_option 指定空值排到最后,ascending 指定倒序

将上面得到的新列 rank 插入 df_normal 中:

代码语言:javascript
复制
df_normal.insert(2,'rank', rank, allow_duplicates=True)
df_normal.head(3)

因为 df_normal 和 rank 的行索引 index 都是从0 开始的自增,所以即便没有自动对齐,也是准确的:

但是,你看下面的情况,自动对齐的方便性就能显示出来

根据 Reviews 列排序

代码语言:javascript
复制
### 根据 Reviews 次数从少到多排序
df_by_reviews = df_normal.sort_values(by='Reviews')
df_by_reviews.head(3)

得到 df_by_reviews ,注意它的 index 不是按照从0自增

此时在 df_by_reviews 中,插入 rank 还能确保数据对齐吗

代码语言:javascript
复制
### 此时插入排名 rank 列,数据会自动对其
df_by_reviews.insert(3,'rank_copy',rank)
df_by_reviews.head()

看到 rank 列 和 rank_copy 列相等,通过下面一行代码验证出来:

len( df_by_reviews[ df_by_reviews['rank'] == df_by_reviews['rank_copy'] ]) == len(df_by_reviews)

由此可见,Pandas已经为数据自动对齐。

但是,如果 rank 的 index 某些索引值没有出现在 df_by_reviews中, 此时又会怎么对齐呢?

代码语言:javascript
复制
### 如果后者index序列中某些值没有出现在df_by_reviews的index中
### 举个例子
df_test = pd.DataFrame({'a':[1,4,7],'b':[5,2,1]},index=[4,3,1])
ser = pd.Series(index=[3,2,1],data=[0,9,8])

结果如上图所示,ser 索引值 2 在 df_test 中找不到对应,故为 NaN

以上就是 Pandas 数据对齐的一个基本介绍,知道这些基本原理后再去使用Pandas 做数据分析,心里才会更有谱。

基于 google app store 我还展开一些其它数据探索分析,如果想要这个jupyter notebook,微信我备注:app

不必打赏

给我点个赞

就心满意足了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档