浅谈Pandas数据分析

一、数据分析概述

1.数据分析的定义

         数据分析可以分成⼴义的数据分析和狭义的数据分析。 广义的数据分析包含狭义的数据分析和数据挖掘。

1.1狭义的数据分析

       狭义的数据分析是根据分析目标,使用⼀定的工具和方法,有针对性地对数据进行收集、加工整理、分析、展现,总结出数据背后的规律和所反映问题的过程。 

1.2数据挖掘

        数据挖掘是指从⼤量数据中,运⽤数学、统计学、计算机等知识,从⼤量的数据中挖掘出有价值 的信息和知识的过程。

2.数据分析的作⽤

       对现有数据进行分析处理,在工程应用中可以对试验或模型数据进行分析,根据数次试验的比对结果对原有模型进行修正及优化;在市场调研等应用中,可根据数据分析的结果了解调研领域的现状,探索关注问题的原因并预测未来发展趋势及市场走向等。

二、数据分析工具

1.分析工具简介

(1)数据存储层常用的数据分析工具:Access、SQL Server、DB、Oracle等

(2)数据处理层常用的数据分析工具:pandas、Hadoop等。

2.Pandas数据分析工具

本文主要介绍pandas数据分析工具的用法。pandas库是⼀个专门用来解决数据分析问题的库,具有以下两大优势:

1)速度快:快速处理⼤型数据集;

2)效率⾼:提供⼤量高效处理数据的函数和方法。

2.1 pandas 库的基本数据结构

        在数据分析的过程中,大部分的⼯作是对数据进⾏各种各样的操作。而pandas 库提供了两种数据结构: DataFrame和Series。

Series主要由⼀组数据及其对应的索引组成。

(1)创建Series对象

# 传入data列表创建Series对象

 pd.Series(data)

DataFrame对象是⼀种表格型的数据结构,包含⾏索引、列索引以及⼀组数据 。

(2)创建DataFrame对象

传入data字典,创建DataFrame对象

pd.DataFrame(data)

2.2 pandas库读取数据

 读取csv格式⽂件,使⽤read_csv()方法导入csv文件,读取数据。

三、数据分析流程

  1. 明确目标:在这个步骤中,你需要知道这次的数据分析任务需要解决怎样的问题,以及该如 何解决。
  2. 数据处理:在明确完⽬标以后,需要对数据进行清洗、整合等操作,把数据变成干净、规整 的样子,这样后续才能对数据进行分析。 
  3. 数据分析:在数据经过处理以后,就可以对数据进行分析,最终得到解决问题的策略。 
  4. 数据展现:在分析完数据以后,需要通过表格或者图表的形式,直观、有效地传递出数据分 析师所要表达的观点。 
  5. 报告撰写:在对数据分析完并且展现完毕后,需要对整个过程进行⼀个梳理与总结。

四、数据分析之预处理

1.处理缺失值

在实际的数据分析项目中,经常会遇见数据统计不完整的情况,我们⼀般将那些缺失的数据称为缺失值。我们⼀般使用 info( )方法查看数据的缺失情况。当非空数据与数据总量不⼀致时,就说明这份数据有可能存在缺失值。

# 查看 mask_data 的基本信息总结

 mask_data.info()

(1).isna( ) 查找缺失值

在pandas库中,我们可以使用 isna( )⽅法来查找DataFrame对象以及Series对象中的缺失值。 检测结果为布尔值:缺失数据会用True来表示,False则代表这里的数据正常。

# 查看mask_data中的缺失值

mask_data.isna()

(2).查看头部数据

使⽤df.head( )会默认打印出前5行。

df.head() # 查看前5行数据,df为DataFrame对象

df.head(2) # 查看数据前2行数据,括号里指定行数,就会打印指定的前几行数据

(3).查看尾部数据

使⽤df.tail( )会默认打印出后5行。

df.tail() # 查看后5行数据,df为DataFrame对象

df.tail(n) # n为数字几,就是查看尾部几行的数据

(4).dr opna( ) 删除缺失值

使⽤d ropna( )方法直接删除DataFrame对象和Series对象中含有缺失值的数据。

  # 将DataFrame对象中包含缺失值的每一行全部删掉

  df.dropna()

2.处理重复值

重复值很好理解,就跟字面意思⼀样,指的是表格中重复出现的数据。在多数情况中,重复值的 整⾏数据都完全相同。

  1. df.duplicated( ) 查找重复值

 使⽤ df.duplicated( )方法来查找DataFrame对象中的重复数据,它会返回⼀个Series对象,找出 所有重复值。重复为True,不重复为False。

# 查找mask_data中的重复行

mask_data.duplicated()

将mask_data.duplicated( )方法的返回结果放⼊中括号[]中,⽤来索引mask_data数据,查看 mask_data数据中重复的⾏。

# 查看mask_data中的重复数据

 mask_data[mask_data.duplicated()]

df.drop_duplicates( ) 删除重复值

使⽤用df.drop_duplicates( )⽅法直接删除DataFrame对象中重复出现的整行数据。

# 直接删除所有重复值

mask_data = mask_data.drop_duplicates()

3.处理异常值

有时数据中有⼀个或多个异常大或异常小的数值,超出了这份数据实际的限定范围,这样的数值被称为异常值。

# 查看mask_data的描述性统计信息

 mask_data.describe()

数据分析之可视化

数据可视化可以利用人对形状、颜⾊的感官敏感,有效地传递信息,帮助用户更直观地从数据中 发现关系、规律、趋势。常见的有折线图、饼图、条形图、直方图等。

六、数据可视化实例

1.数据导入及基本设置

import pandas as pd

import matplotlib.pyplot as plt

# 读取数据

df = pd.read_csv('./data/clean_data.csv',encoding='utf-8')

# 设置画布大小

plt.rcParams['figure.figsize'] = 10, 6

# 只保留 2017 年和 2018 年的数据

df = df[(df['年份']==2017) | (df['年份']==2018)]

df.head(10)

2.绘制箱图

import seaborn as sns

# 设置字体  

plt.rcParams['font.family'] = ['Source Han Sans CN']

# 绘制 2017 年和 2018 年付款金额的箱图

sns.boxplot(x='年份', y="付款金额", data=df,

            linewidth=1,

            width=0.5,

            fliersize=0.1,

            whis=3,

            notch=True,

            palette='Reds')

plt.show()

3.绘制折线图 

# 首先通过分组聚合出每一年中每个月的顾客ID

df = pd.read_csv('./data/clean_data.csv',encoding='utf-8')

data_month=df.groupby(['月份','顾客ID']).agg({'年份':'mean'})

# 并将集计得到的结果的行索引进行重置

df_month_customer= data_month.reset_index()

# 对上面得到的 dataframe 分组聚合得到每一年中每个月的顾客总数

# 并将集计得到的结果的行索引进行重置

df_month_customer_list=df_month_customer.groupby(['年份','月份']).count().reset_index()

# 用 seaborn 画出 2017 年和 2018 年每个月的顾客数的折线对比图

sns.lineplot(x='月份', y="顾客ID", data=df_month_customer_list,

             ci=None,

            hue='年份',

            style='年份',

            markers=True,

            dashes=True,

            palette='bright')

plt.show

#不畏浮云遮望眼,自缘身在最高层#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值