首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据分析 | 相关分析

Python数据分析 | 相关分析

作者头像
郭好奇同学
发布2021-11-10 11:14:32
5450
发布2021-11-10 11:14:32
举报
文章被收录于专栏:好奇心Log好奇心Log

目前手上有两本书,一本《利用Python进行数据分析》,一本《Python数据科学》。

对于学习什么东西,都有它的「道」和「术」。「道」即原理,「术」即技巧。

通过这几天翻阅这两本书,发现前者更像一本工具书。

它并不会真正的教你如何去分析数据,适合查阅。

而后者呢,更注重数据分析的原理,教我们如何去剖析数据,得到我们想要的结果。

所以接下来会以后者作为学习的方向,不能仅仅停留在描述性数据分析上(数据可视化)。

更应该多花时间在预测性数据分析上(建立数据模型预测)。

另外上期的送书活动已结束,两位小伙伴也联系我了。

没有中奖的小伙伴也不要伤心,后面小F会给大家争取更多的福利,所以关注就是了。

/ 01 / 前言

说实话,《Python数据科学》这本书是真的不错。

它不仅提供了大量的专业术语的解释,还有各式各样通俗易懂的案例。

非常适合新手学习,后期一定也给大家争取争取一下送书的福利!

所以在每篇的前言,我会摘要一些《Python数据科学》的相关内容。

一方面,加深自己对相关知识的印象。

另一方面,也分享给大家,补充一下专业知识。

分析过程中尽量不用书中的数据和案例,用我自己公众号文章的数据和案例。

这样显得更接地气一点,学的也更深刻。

变量分为「名义变量」「等级变量」「连续性变量」。

「名义变量」为无序分类变量。

比如豆瓣电影TOP250数据里的「国家」「电影名称」。

「等级变量」为有序分类变量。

比如数据分析岗数据里的「学历」「工作经验」。

「连续型变量」为连续型变量在规定范围区间内可以被任意取值。

比如豆瓣电影TOP250数据里的「年份」「评分」「评分人数」。

/ 02 / 相关分析

在上面,我们简述了变量的类型,也举了相关例子。

接下来我们针对两连续变量关系检验,进行相关分析

使用豆瓣TOP250里的数据,研究排名评价分数之间的关系。

读取数据并清洗。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

# 读取文件
df = pd.read_csv('douban.csv', header=0, names=["quote", "score", "info", "title", "people"])
(dom1, dom2, dom3, dom4) = ([], [], [], [])
# 清洗数据,获取电影年份及国家,增加年份列及国家列
for i in df['info']:
    country = i.split('/')[1].split(' ')[0].strip()
    if country in ['中国大陆', '台湾', '香港']:
        dom1.append(1)
    else:
        dom1.append(0)
    dom2.append(int(i.split('/')[0].replace('(中国大陆)', '').strip()))
df['country'] = dom1
df['year'] = dom2
# 清洗数据,建立评价人数列
for i in df['people']:
    dom3.append(int(i.replace('人评价', '')))
df['people_num'] = dom3
# 生成电影排名列表
dom4 = [x for x in range(1, 251)]
df['rank'] = dom4
print(df)

在那一期的排名评分人数三维度图里,我们知道排名越靠前,评价人数越多,评分越高。

这只是我们直观上的推测,并不是用数据确确实实展示的。

相关分析就可以用数据来证明我们本次猜测的正确性。

首先我们通过散点图来看排名与评价分数之间的关系,看是否有所相关。

# scatter为散点图
df.plot(x='rank', y='score', kind='scatter')
plt.show()

这里由于排名排序问题显现出线形负相关,不过这并不影响分析。

你就默认正相关就好,即排名越靠前,分数越高。

通过散点图我们发现数据有线性相关关系。

那么就能使用皮尔逊(Pearson)相关系数对两变量的相关关系进行分析。

# corr()方法:计算两两相关的列,不包括NA/Null值 persion:标准相关系数
print(df[['rank', 'score']].corr(method='pearson'))

输出两变量相关系数,绝对值约为0.70,查表可知相关程度为高度。

那么结论就显而易见,排名与评价分数之间的关系为线性正相关!!!

相关分析除了通过相关系数分析,还可以通过散点矩阵图。

对多个变量之间的相关关系进行分析,去探索变量间的关系。

# seaborn回归/散点图
sns.pairplot(df[['score', 'people_num', 'year', 'country', 'rank']])
plt.show()

生成如下散点图,可以发现rank与score及people_num相关性较大(右上角两个图)。

接下来创建分组变量,指定国家为分组变量,来看中国和外国的豆瓣电影TOP250数据情况。

# 生成带辅助线的散点图矩阵,hue:分类
sns.pairplot(df[['score', 'people_num', 'year', 'country', 'rank']], hue='country', kind='reg', diag_kind='kde', size=1.5)
plt.show()

在这里能观察数据的拟合线及上下浮动范围,更加直观的了解变量间的情况。

不过国家分类倒是没什么发现,可能与数据样本过少有关。

/ 03 / 总结

本次只是一个简单的相关分析案例,里面涉及太多的数学知识我就不赘述了。

看了这本书我才知道,我要学的东西真的多...

不过能结合之前的相关案例去分析,我觉得就很不错了。

能够学以致用,有自己的想法。

文末点个赞,比心!!!

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

本文分享自 好奇心Log 微信公众号,前往查看

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

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

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