澳门新葡最新网站_澳门新葡8455手机版网址

澳门新葡最新网站一直被誉为干邑品质、形象和地位的象征,因为在这里我们可以进行澳门新葡8455手机版网址下载,澳门新葡最新网站是耗时两年精心打造的全新武侠网游巨作,点击即有更多优惠活动等着你。

当前位置:澳门新葡最新网站 > 互联网创业 > 数据科学入门的5个技巧

数据科学入门的5个技巧

文章作者:互联网创业 上传时间:2019-11-08

原标题:数据科学入门的5个技巧

Pandas数据处理

很多人问我数据科学和数据分析的最大区别是什么。有的人认为两者没有区别,有的人则认为两者千差万别。我认为,尽管两者确实存在很多不同之处,但最大的不同在于数据科学严格遵循结构化、一步一步的操作过程,保证了分析结果的可靠性。

1.导入库

1 import numpy as np
2 import pandas as pd
3 import matplotlib.pyplot as plt

和其他科学研究一样,这些过程必须被严格执行,否则分析结果将不可靠。再直白一点,对于外行的数据科学家,严格遵循这些过程将能够快速获得准确结果。反之,如果没有清晰的路线图,则分析结果很难得到保证。

2.导入json文件

pandas的read_json方法将其转化为DataFrame格式

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同值的类型(数值,字符串,布尔值等);DataFrame既有行索引也有列索引,也可以看做是Series组成的字典(共用一个索引),和其他类似的数据结构比, DataFrame中面向行和面向列的操作基本上是平衡的;

DataFrame中的数据其实是以一个或多个二维块存放的(而不是列表、字典等一维数据结构), 虽然是以二维结构保存数据,但是仍然合一轻松地将其表示为更高维度的数据(层次化索引的表格型结构,这是pandas中许多高级数据处理功能的关键要素)

df = pd.read_json('/Users/zhaoluyang/Desktop/Python_全国JSON.json')

3.查看当前表的信息

1 df.index#查看行索引信息
2 df.columns#查看列信息
3 df.head()#默认查看前5行元素,括号内可任意指定数字。
4 df.tail()#默认指定最后5行元素,同样可指定数字。
5 df.info()#查看表整体信息。
6 df[['ZL_Job_id','工作地点']].head()#查看df表中'ZL_Job_id'和'工作地点'两列前5个元素。

图片 1

 

 可以看见,总共有18326个行索引(18326行),15列columns分别为ZL_Job_id、公司名称、公司链接...

图片 2

4.简单的数据规整

经过第3步查看发现导入的表中ZL_Job_id一列是乱序版的,并没有按照1、2、3...的次序排列。 看了下json原文件发现也是乱序的,但是为了看起来美观和统一,我需要把此列按正常序号排列, 然后将此列作为列索引。(因为这一列在mysql里就是我手动添加做索引来用的) 此时大致需要几个步骤:

1.将df中系统自动添加的索引替换成列ZL_Job_id。

2.将原来的‘ZL_Job_id’列删除。

3.给新的索引列排序。(也可以对数据列排序df.sort_values([‘ZL_Job_id’]))

 

1 df.index=df['ZL_Job_id']
2 del(df['ZL_Job_id'])
3 df1 = df.sort_index()#直接df.sort_index()可返回索引的结果,但之后df还是原来的结构
4 df1[['职位名称','工作地点']].head()

图片 3

虽然这些步骤更多是写给业余分析师的指引,但它们同样是数据科学家,甚至更严格的商业分析和学术分析的基础。每一位数据科学家都理解这些步骤的重要意义,会在实践过程中严格遵守它们。

5.常用的函数示例

#qw表示在df表中column=工作经验的列中,【工作经验==不限】的次数

qw = df['工作经验'][df['工作经验']=='不限'].value_counts()

#直接用value_counts()统计工作经验字段各个值出现的次数,并画图展示。PS:查询结果是Series形式(<class 'pandas.core.series.Series'>)

df['工作经验'].value_counts().plot()

一些有用的函数

unique()、describe()、groupby()、zip()

df['Names'].unique()

 

结果:array(['Mary', 'Jessica', 'Bob', 'John', 'Mel'], dtype=object)

df['Names'].describe()

 

结果:
count 1000
unique 5
top Bob
freq 206
Name: Names, dtype: object

BabyDataSet = list(zip(names,births))
BabyDataSet

 

结果:[('Bob', 968), ('Jessica', 155), ('Mary', 77), ('John', 578), ('Mel', 973)]

 

5个步骤概览

数据科学的5个必备步骤分别是:

(1)提出有意思的问题;

(2)获取数据;

(3)探索数据;

(4)数据建模;

(5)可视化和分享结果。

首先,我们从宏观上了解以上5个步骤。

1.1.1 提出有意思的问题

这是我最喜欢的一步。作为一个创业者,我经常问自己(和他人)很多有意思的问题。我像对待头脑风暴会议一样对待这一步。现在开始写下问题,不要关心回答这些问题所需的数据是否存在。这样做的原因有两个。

第一,你不会希望在没有找到数据之前,就被自己的偏见影响。第二,获取数据可能涉及公开渠道和私有渠道,因此不会轻松和显而易见。

你可能想到一个问题,然后自言自语说:“我打赌没有这样的数据可以帮到我们!”然后就将它从问题列表中删除。千万不要这样做,把它留在你的问题列表中!

1.1.2 获取数据

一旦你确定了需要关注的问题,接下来就需要全力收集回答上述问题所需要的数据。正如之前所说,数据可能来自多个数据源,所以这一步非常具有挑战性。

1.1.3 探索数据

一旦得到数据,我们将使用第2章学习的知识,将数据归类到不同的数据类型。这是数据科学5个步骤中最关键的一步。当这一步骤完成时,分析师通常已经花费了数小时学习相关的领域知识,利用代码或其他工具处理和探索数据,对数据蕴含的价值有了更好的认识。

1.1.4 数据建模

这一步涉及统计学和机器学习模型的应用。我们不仅仅选择模型,还通过在模型中植入数学指标,对模型效果进行评价。

1.1.5 可视化和分享结果

毫无疑问,可视化和分享结果是最重要的一步。分析结果也许看起来非常明显和简单,但将其总结为他人易于理解的形式比看起来困难得多。我们将通过一些案例,演示糟糕的分享和改善后的效果。

本文将重点关注第(3)、(4)、(5)步。

为什么本书跳过了第(1)、(2)步?

虽然前两步对数据科学整个过程是非常必要的,但它们通常先于统计模型和程序处理。本书的后面章节将介绍不同的数据收集方法,在此之前,我们更加关注数据科学过程中“科学”的部分。所以,我们先从探索数据开始。

探索数据

数据探索的过程并不简单。它涉及识别数据类型、转换数据类型、使用代码系统性提高数据质量为模型做准备的能力。为了更好地演示和讲解数据探索的艺术,我将使用Python的Pandas包,对几个不同的数据集进行探索。在此过程中,我们将看到多种数据处理技巧。

当我们接触新数据集时,有5个基本问题需要回答。请牢记,这些问题并不是数据科学的起点和终点,它们是我们面对新数据集时需要遵循的基本原则。

1.2.1 数据探索的基本问题

每当接触新数据集时,不论你是否熟悉它,在初次进行分析前回答以下问题都非常有必要。

● 数据是有组织格式的,还是无组织格式的?

我们需要确认数据是否是行列结构。大部分情况下,我们处理的数据都是结构化数据。本书中,超过90%的例子都是结构化数据。尽管如此,在我们进行更深入的数据分析之前,还是要弄清楚这个最基本的问题。

根据经验,如果数据是无组织格式的,我们需要将其转换为有组织的行列结构。在本书前面的例子中,我们通过对文本中词语计数的方式将其转换为行列结构。

● 每一行代表什么?

一旦我们弄清楚了数据的组织形式,得到了行列结构的数据集,接下来就需要弄清楚每一行代表的意思。这一步通常不需要花费多少时间,却大有裨益。

● 每一列代表什么?

我们需要识别每一列的数据层次、定性/定量属性等。分类结果可能随着分析的不断深入而改变,但越早开始这一步越好。

● 是否有缺失值?

数据并不完美。很多时候,人工或机械的错误将导致数据缺失。当这种错误发生时,作为数据科学家,我们需要决定如何处理这些错误。

● 是否需要对某些列进行数据转换?

我们可能需要对某些列进行数据转换,当然,这取决于该列的数据层次和定性/定量属性。比如,为了使用统计模型和机器学习模型,数据集中的每一列都需要是数值型的。我们可以使用Python对数据集进行转换。

自始至终,我们的核心问题是:我们能从前期的推理统计中得到哪些信息?我们希望对数据的理解比初次接触时更深。

好了,我们已经介绍了很多内容,下面看一些具体的例子。

1.2.2 数据集1:Yelp点评数据

我们使用的第1个数据集来自点评网站Yelp的公开数据,数据集中所有的身份识别信息已经被删除。首先读取数据,如下所示。

import pandas as pd

yelp_raw_data = pd.read_csv("yelp.csv")

yelp_raw_data.head()

上述代码的作用是:

● 导入Pandas包,并缩写为pd。

● 读取文件yelp.csv,并命名为yelp_raw_data。

● 查看数据的表头(仅前几行),如图3.1所示。​

图片 4

​图3.1 数据的表头

问题1:数据是有组织格式的,还是无组织格式的?

● 数据源是非常好的行列结构,我们可以认为它是有组织格式的。

问题2:每一行代表什么?

● 很明显,每一行代表一条用户的评价。我们还会查看每一行和每一列的数据类型。我们使用DataFrame的shape方法查看数据集的大小,如下所示。

yelp_raw_data.shape

# (10000, 10)

● 结果显示,数据集有10 000行和10列。换言之,数据集有10 000个观测值和10个观测特征。

问题3:每一列代表什么?

请注意,数据集有10列。

● business_id:本列看起来是每条评价对应的交易的唯一识别码。本列是定类尺度,因为识别码没有天然的顺序。

● date:本列是每条评价的提交日期。请注意,它只精确到了年、月和日。虽然时间通常被认为是连续数据,但本列应该被视为离散数据。本列属于定序尺度,因为日期有天然的顺序。

● review_id: 本列看起来是每条评价的唯一识别码。本列同样属于定类尺度,因为识别码没有天然的顺序。

● stars:本列看起来(别担心,我们随后会对它进行深入的分析)是评价者给每一个餐馆的最终评分。本列是有次序的定性数据,因此属于定序尺度。

● text:本列看起来是用户撰写的评价。对于大部分文本数据,我们将其归为定类尺度。

● type:本列前5行均为“review”,我们猜测它是标记每行是否为“review”的列,也就是说很可能存在不是“review”的行。我们随后将进行更深入的分析。本列属于定类尺度。

● user_id:本列是每个提交评价的用户的唯一识别码。和其他唯一识别码一样,本列也属于定类尺度。

问题4:是否有缺失值?

● 使用isnull方法判断是否有缺失值。比如,对于名为awesome_dataframe的DataFrame数据集,使用Python代码awesome_dataframe.isnull().sum()可显示每一列的缺失值总数。

问题5:是否需要对某些列进行数据转换?

● 我们想知道是否需要改变定量数据的数值范围,或者是否需要为定性数据创建哑变量?由于本数据集只有定性数据,所以我们将焦点放在定序和定类范围。

在进行数据探索之前,我们先对Python数据分析包Pandas的术语做一个简单了解。

DataFrame

当我们读取数据集时,Pandas将创建一个名为DataFrame类型的对象。你可以将它想象成Python版本的电子表格(但是更好用)。

在本例中,变量yelp_raw_data就是一个DataFrame。

我们使用以下代码验证以上说法。

type(yelp_raw_data)

# pandas.core.frame.Dataframe

DataFrame本质上是一种二维结构,它和电子表格一样以行列结构存储数据。但是相对于电子表格,DataFrame最重要的优点是它可以处理的数据量远超大多数电子表格。

如果你熟悉R语言,可能认识DataFrame这个词,因为Python中的DataFrame正是从R语言借过来的!

由于我们处理的大部分数据都是有组织数据,所以DataFrame是Pandas中使用频率仅次于Series的对象。

Series

Series是简化版的DataFrame,它只有一个维度。Series本质上是由数据点组成的列表。DataFrame的每一列都可以被看作一个Series对象。下面用代码进行验证。我们首先从DataFrame中抽取单独一列(通常用中括号),代码如下:

yelp_raw_data['business_id']# grab a single column of the Dataframe

我们列出其中几行。

本文由澳门新葡最新网站发布于互联网创业,转载请注明出处:数据科学入门的5个技巧

关键词: