pandas数据分析实例(pandas、matplotlib)

本文是一篇关于pandas数据分析的实践记录,包括数据读取、数据概述、数据清洗整理、数据可视化四个部分。内容涉及read_csv()函数、df.info()、df.head()、df.tail()、数据去重、取最小最大值、转换数据类型、计算平均薪资、数据可视化(如直方图、箱线图)等操作。文章展示了如何通过Python的pandas库处理数据并利用matplotlib进行数据可视化。
摘要由CSDN通过智能技术生成

本人喜欢数据分析,接触数据分析也接近两年的时间了,最近在学习pandas。学习最好的方法是使用它,所以,根据这个文章,做了一些练习,并记录下我练习的轨迹。
本篇文章是练习文,输出的观点以及技术比较少。
文章链接:https://mp.weixin.qq.com/s/RcrQmqty1FHEDbQfxv2XTQ
感谢作者!!!
主要是四部分:数据读取,数据概述,数据清洗和整理,分析和可视化

一、数据读取

df = pd.read_csv(r'F:\python学习\DataAnalyst.csv',encoding='gb2312')
print(df)

结果如下:
在这里插入图片描述
read_csv()函数虽然用起来非常简单,但其实里面包含了很多参数,详细参数可以看这篇
官方文档:https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-read-csv-table

二、数据概述

df.info()#数据里字段的格式
df.head()#取数据的前5行
df.tail()#取数据的最后5行

df.info()的结果:
在这里插入图片描述
这里可以看到数据集包含的字段,以及字段不为null的记录数,以及字段类型。可以知道,数据集一共有16个字段,6876条数据,其中有部分数据统计中出现null数据。
df.head()的结果:
在这里插入图片描述
df.tail()的结果:
在这里插入图片描述
这一部分主要是用来查看数据集,了解数据集的概况。

三、数据清洗和整理

1、查重&去重
使用unique()函数筛选不重复的positionId数,len()统计
drop_duplicates(subset=‘x’,keep=‘first’,inplace=False)
参数:
(1)subset:列名,默认为none
(2) keep:有三个值为:first: 保留第一次出现的重复行,删除后面的重复行;
last: 删除重复项,除了最后一次出现;
False: 删除所有重复项
(3) inplace:布尔值,默认为False,是否直接在原数据上删除重复项或删除重复项后返回副本。 (inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。)

#1、查重
len(df.positionId.unique())#
 #结果为5031条不重复的记录数
#2、去重
df_duplicates=df.drop_duplicates(subset='positionId',keep='first')#按照positionId去重,保留第一次出现的重复行

2、取最低工资和最高工资&转换数据类型
在执行下面代码时不会出错,但是会抛出警示:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame,解决这个警示的方案为:
在代码前加上:df_duplicates=df_duplicates.copy(),也就是对数据框进行复制,后续新增列都是对复制的数据框进行操作。

df_duplicates=df_duplicates.copy()#解决SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
#3、取最低工资&最高工资:
def cut_word(word,method):
    position=word.find('-') #find()函数:寻找某字符串是否在该字符串中出现,如果出现,返回第一次出现的索引,没有的话返回-1
    length=len(word)
    if position !=-1:
        bottomSalary=word[:position-1]
        topSalary=word[position+1:length-1]
    else:
        bottomSalary=word[:word.upper().find('K')]
        topSalary=bottomSalary
    if method=='bottom':
        return bottomSalary
    else:
        return topSalary
df_duplicates['bottomSalary']=df_duplicates.salary.apply(cut_word,method='bottom')
df_duplicates['topSalary']=df_duplicates.salary.apply(cut_word,method='top')
#数据类型转换:需要通过赋值才能转换成功
df_duplicates['bottomSalary']=df_duplicates['bottomSalary'].astype('int')
df_duplicates['topSalary']=df_duplicates['topSalary'].astype('int')

(1)函数定义def
apply()函数:apply函数中可以来使用自定义的函数(func);对于func中传递的参数,如果axis =0 应用于每一列上, 如果axis=1应用于每一行上
(2)find():寻找某字符串是否在该字符串中出现,如果出现,返回第一次出现的索引,没有的话返回-1
(3)数据类型转换:
astype基本也就是两种用作࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值