Pandas数据探索分析,分享两个神器

Pandas数据探索分析,分享两个神器,第1张

在使用 pandas 进行数据分析时,进行一定的数据 探索分析(EDA)是必不可少的一个步骤,例如常见统计指标计算、缺失值、重复值统计等。

使用 df.describe 等函数进行 探索 当然是常见 *** 作,但若要进行更完整、详细的分析缺则略显不足。

本文就将分享两个用于数据 探索 的 pandas 插迅拿毕件。

首先要介绍的是 pandas_profiling ,它扩展了 pandas DataFrame 的功能,这也是在之前多篇文章中提到的插件。

只需使用 pip install pandas_profiling 即可安装,在导入数据之后使用 df.profile_report 一行命令即可快速生成描述性分析报告

可以看到,除了之前我们需要的一些描述性统计数据,该报告还包含以下信息:

进一步我们还以将该报告保存为 html 格式,方便后续的查看,感兴趣的读者可以自行尝试。

第二个值得一用的是 sweetviz ,同样是一个开源 Python 库,可生成美观、高密度的可视化,只需两行代码即可启动 EDA 。

该插件围绕快速可视化目标值和比较数据集而构建。它的目标是帮助快速分析目标特征、训练与测试数据以及其他此类数据特征任务。

安装方法敏没同上,执行 pip install sweetviz 即可。使用方法也是类似,导入数据后只需两行代码即可输出分析报告亩芹

和 pandas_profiling 不一样的是,现在我们只能得到一个 html 文件,打开即可看到相关 EDA 报告

可以看到,自动生成的报告主要有以下几个部分

从上面的介绍我们也能看出,两个 EDA 的插件侧重点有所不同,我们在实际使用时也应该根据数据特征与分析目标灵活使用!

大数据测试,说来进入这块领域也快2年半了。每天工作的内容是验证数据表的逻辑正确性。

最近偶有所思,数据测试能否更进一步?如何利用已有技能对海量数据进行全面分析,找出数据质量问题或协助数据分析师发现逻辑漏洞?

再或者,颤埋能否向数据分析师转型呢?想凯洞枣得很多,思绪有些杂乱。于是我冷静了下,不再空想。我先做点东西出来看看,再评估下自己是否有这个能力和资质。

花了1个星期的时间,学习了 Python 的 Pandas 模块,按照学习示例一边学习一边实 *** ,慢慢地感觉就来了。对 Pandas 有了基本的认知后,我在寻找一个突破点,我想我不能一直只是这样按照示例代码敲下去,毫无意义。

我得将所学的 Pandas 知识结合公司现有的业务进行运用。刚开始至少能简单地开始对某张数据表的某个指标进行数据分析盯拆。于是我按照这样的想法对 test. test_resv001_room_daily_df 表的 number_of_room_nights 指标开始了数据分析的 探索 。

1、hivesql数据准备

hivesql内容说明:

从上面的 hivesql 语句可以看出,这条 sql 的目的是查询出 hotel_code_new 为 'CNSZV002','CWH','CWSW','ESL','FIJ' 在2019年各个月份的 number_of_room_nights 指标总和,按照 hotel_code_new 和月份作分组和排序。

2、代码实现

3、hive数据库all_data的数据结构查询结果

4、代码实现2中的print(df)输出结果

手工校对通过,与 hivesql 输出结果一致。

5、将dataframe数据结构的df数据使用plot生成趋势图

调用df.plot()不带任何参数的趋势图如下:

上述折线图表示:当前月份值及 历史 月份值的累加和。

调用df.plot(kind='bar')时加上参数kind='bar'的趋势图如下:

上述柱状图表示:当前月份值及 历史 月份值的累加和。

两个图只是展示形式上的区别,都能在一定程度上体现2019年12个月份每个不同 hotel_code_new 当前月份与 历史 月份 number_of_room_nights 值的累加和的数据分布情况,可以说是一个简单的数据分析。

6、将dataframe数据写入csv文件

room_nts.csv内容如下:

7、读取csv文件中dataframe数据

8、将dataframe多维数据存储到excel中

room_nts.xlsx文件中sheet_name为room_nts的内容如下:

9、从excel中读取dataframe多维数据

小结

今天分享的数据分析内容比较基础,主要是将学到的技能与业务相结合的初步 探索 ,后续还需要不断 探索 与学习,将学习到的技能加以思考并运用到实际项目业务中,如此方能走得更远。

order = ['id','msg','reason']

df = df[order]

常用:

df.rename(columns={'A':'a','B':'b'},inplace=True)(inplace说明修改原数据)

高级用法示例:大型态写转成小写,去除头尾空格(strip)用 替换空格

df.rename(columns=lambda x:x.strip().lower().replace(' '," "),inplace=True)

检查冗余值 df.duplicated()

删除冗余值 df.drop_duplicates(inplace=True)

df.reset_index()

test=pd.DataFrame(msg)

lambda x: 1 if x>0 else 0

df = pd.concat([df,msg],axis=0,ignore_index=True)

pd.merge(df1,df2) 相当于sql, join的左连接

str[0:4] #截取第一位和第四位的字符

str[:-1] #截取从开头到倒数第一唯凯位的字符

for i,val in range(len(temp)):

for i,val in enumerate(temp):

df[df.isnull().values==True].drop_duplicates()

append()向列表尾部追加一个元素,只占一个索引位

extend()像列表尾部追加一个李彪,将列指租唤表2中 的每个元素都追加进列表1 .

str=','.join(str(i)for i in list)

eval(str)

df1 = df2.groupby(['ip']).aggregate(lambda x:set(x))

for i in data:

def timeStamp(timeNum):

timeStamp = float(timeNum/1000)

timeArray = time.localtime(timeStamp)

otherStyleTime = time.strftime("%Y.%m.%d", timeArray)

return otherStyleTime

df= df.astype('str')

import json

with open('psth','r') as load_f:

load_dict = json.load(load_f)

ioc_list=[]

for k,v in load_dict.items():


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8032709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存