利用Python做数据分析的基本步骤(持续更新)

一、环境搭建

数据分析最常见的环境是Anaconda+Jupyter notebook

二、导入包

2.1数据处理包导入

import numpy as np
import pandas as pd

注:numpy是Numerical Python的简称,是一个科学计算的包,可用来矩阵运算,处理线性代数的常见问题。

pandas是panel data和data analysis的组合词,原来是用来处理计量经济学面板数据的工具,可以用来数据对齐、切割、取片、查重、去空等一系列操作。

 

2.2画图包导入

import matplotlib.pyplot as plt
import missingno as msno
import seaborn as sns
sns.set()
sns.set_style('whitegrid', {'font.sans-serif':['simhei', 'Arial']})

注:matplotlib是常见的绘制图表的工具,seaborn是它的加强版,missingno是缺失值可视化处理的工具,sns.set()设置画图空间为 Seaborn 默认风格。后面的代码为处理中文字体。

 

2.3日期处理包导入

import calendar
from datetime import datetime

2.4jupyter notebook绘图设置

%matplotlib inline
%config InlineBackend.figure_format="retina"

注:%matplotlib inline是jupyter notebook里的命令,意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口。

在分辨率较高的屏幕(例如 Retina 显示屏)上,notebook 中的默认图像可能会显得模糊,可用%config InlineBackend.figure_format="retina"来呈现分辨率较高的图片。

三、读取数据

data = pd.read_csv(r"D:\0工作\数据集\train_users_2.csv ")
data = pd.read_excel(r" D:\0工作\excel\6.xlsx ")

注:读取csv格式选第一种,读取excel表选第二种,“”内填文件所在位置。Excel只能存储十万多行数据,而csv(逗号分隔值文件格式)则能存储上亿行数据,所以数据分析中多以csv格式保存数据。

文件地址在文件的属性的对象名称中。

 

四、数据预览

1.查看数据集大小

Data.shape
#输出:(10886, 12)

2.查看随便几行、前几行或后几行

data.sample(5)
data.head(5)
data.tail(5)

3.查看数据类型

data.dtypes  #会输出字段和字段类型

4.查看数据的数量、无重复值、平均值、最小值、最大值等

data.describe()
data. describe(include='object')

5.查看字段名、类型、空值数为多少

data.info()

利用Python做数据分析的基本步骤(持续更新)_第1张图片

五、数据处理

在数据的处理过程中,一般都需要进行数据清洗工作,如数据集是否存在重复,是否存在缺失,数据是否具有完整性和一致性,数据中是否存在异常值等。

1.把需要的字段挑选出来。

data.columns   #看一下数据集的所有字段

利用Python做数据分析的基本步骤(持续更新)_第2张图片

data.iloc[50] #随便挑一行看看数据的大致情况,以决定取舍哪些字段

利用Python做数据分析的基本步骤(持续更新)_第3张图片

sample_data=['city', 'fields.comment', 'fields.discountPrice']
data = data[col_keep] #选取想要的字段

1.2如果数据混杂在一起,可以先用split函数拆分,然后取出字段。

#先看一下数据集大体情况
data_wx['area'].sample(10)

利用Python做数据分析的基本步骤(持续更新)_第4张图片

用split函数,以“-”符号为间隔,将地区数据列拆分

data_wx['area'].str.split("-",expand=True) 
#str转换为字符串
#expand参数控制了是否将列拆开

利用Python做数据分析的基本步骤(持续更新)_第5张图片

#选取出想要的数据
data_wx['province'] = data_wx['area'].str.split("-",expand=True)[0]
data_wx['city']=data_wx['area'].str.split("-",expand=True)[1]

1.3使用concat函数把想要的数据合并在一起

data_wx['teacher_type']='中教'
#增加一个teacher_type列,该列数据都是“中教”
data_jlc['teacher_type'] = '外教'
data_salary = pd.concat([data_wx[['salary_clean','teacher_type']],
                       data_jlc[['salary_clean','teacher_type']]])
data_salary.rename(columns={'salary_clean':'工资','teacher_type':'教师类型'},inplace=True)

2.数据类型转换

使用astype()函数

data['fields.discount']=data['fields.discount'].astype(float)
data['fields.price']=data['fields.price'].astype(float)
data['fields.soldRecentNum']=data['fields.soldRecentNum'].astype(int)

3.日期段数据处理。

如果给的数据是2020-01-01 05:20:15格式,那么可以采取下面的代码从"datetime"字段中,提取date、hour、weekday、month。

3.1提取“date”

data["date"] = data.datetime.apply(lambda x: x.split()[0])

注:就是把它按空格切成两段,然后取第一段。

lambda函数也叫匿名函数,即没有具体名字的函数,它允许快速定义单行函数,用在任何需要函数的地方,这区别于def。

apply函数,返回括号中的参数。

split(sep),sep表示用于分割的字符。它通过指定字符进行切片。

3.2提取"hour"

data["hour"]=data.datetime.apply(lambda x: x.split()[1].split(":")[0])

注:就是先把它按空格切成两段取第二段,再按分号切,取第一段。

3.3提取"weekday"

datestr=data.datetime[1].split()[0]
data["weekday"]=data.date.apply(lambda datestr:
calendar.day_name[datetime.strptime(datestr,"%Y-%m-%d").weekday()])

注:按空格把时间分成两段取第一段,把它变成合适的时间格式,得出是星期几

通过datetime.strptime()函数把字符串转化为datetime格式

%Y 四位数的年份表示(000-9999)%m 月份(01-12)%d 月内中的一天(0-31)

weekday()函数返回的是当前日期所在的星期数。

3.4提取"month"

data["month"]=data.date.apply(lambda datestr:
calendar.month_name[datetime.strptime(datestr,"%Y-%m-%d").month])

4.变量映射处理

数据的一些字段是杂乱的,不规范的,通过map函数将不规范变量映射处理为能够使用的规范变量。

使用unique函数查看某字段的所有数据

data_wx['exp'].unique()
#unique():返回参数数组中所有不同的值,并按照从小到大排序

 

你可能感兴趣的:(数据分析,数据分析)