您的位置:beat365亚洲官方网站 > 互联网资讯 > Python-Pandas的简单使用beat365亚洲官方网站

Python-Pandas的简单使用beat365亚洲官方网站

2019-10-21 12:14

● 真:该行满足条件;

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)]

 

unique 9998

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()

beat365亚洲官方网站 1

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

1.导入库

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

[美] 斯楠·奥兹德米尔(Sinan Ozdemir) 著

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个元素。

beat365亚洲官方网站 2

 

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

在本例中,我们无须进行数据转换。

Pandas数据处理

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

我们已经知道business_id列有10 000个值,但千万别被骗了!这并不意味着真的有10 000条交易评价,它仅仅意味着business_id列被填充了10 000次。

# unique 4174

1.1.1 提出有意思的问题

beat365亚洲官方网站 3

​图3.2 筛选后的结果

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

对于定类尺度数据,我们通常观察以下几个特征,以决定是否需要进行数据转换。

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

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

我们列出其中几行。

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

● 非重复项的个数是否合理(通常小于20个)?

# freq 1

3 _1QQZuf4zZOyFCvXc0o6Vg

在Python中,我们可以像对1和0一样,对真和假进行相加或相减。比如,真+假-真+假+真==1。所以,我们可以通过将Series对象的值相加来验证其是否正确。由于只有两行文本重复,所以Series对象合计值应为2,如下所示:

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

1.2.1 数据探索的基本问题

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

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

count 10000

请注意,数据集有10列。

top fczQCSmaWF78toLEmb0Zsw

● count:该列含有多少个值。

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

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

问题4:是否有缺失值?

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

本书可以帮助读者把数学、编程和商业分析联系起来。通过学习这本书,读者有信心探究和解答复杂的数据科学问题,从抽象的原始的统计,发掘出切实可行的观点和想法。本书适合缺乏数学知识的编程人员,或者是拥有数学技能、想投身数据科学领域的人士阅读使用。​返回搜狐,查看更多

# unique 10000

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

duplicate_text = yelp_raw_data['text'].describe()['top']

当然是合理的!因为该列是每条评价的唯一识别码,每一行代表独立的、不重复的点评,所以review_id列含有10 000个不重复值是合理的。

5个步骤概览

yelp_raw_data['business_id'].describe()

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

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

text_is_the_duplicate = yelp_raw_data['text'] == duplicate_text

下面我们使用以上两个Pandas数据类型开始数据探索!对于定性数据,我们主要关注定类尺度和定序尺度。

freq 10000

● 每一列代表什么?

# (10000, 10)

# tope Ta5KD-LTgQv6UT1Zmijmw

● 每一行代表什么?

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

(4)数据建模;

现在,我们已经有了布尔型Series对象,我们可以用括号将它传入DataFrame数据集中,得到筛选后的结果,如图3.2所示。

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

我们马上发现这可能是同一个人给隶属于同一家连锁餐馆的两家店撰写的两条完全相同的评价。但是,在没有进一步证据之前,这仅仅是猜测。

type(yelp_raw_data)

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

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

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

定类尺度

# pandas.core.series.Series

filtered_dataframe​

unique 6403

1.1.3 探索数据

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

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

beat365亚洲官方网站 4

# pandas.core.frame.Dataframe

type(yelp_raw_data['business_id'])

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

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

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

(2)获取数据;

DataFrame

text列有点意思,它是用户撰写的评价。理论上,我们认为它和review_id列一样是不重复的文本,因为如果两个不同的人撰写的评价完全一致会非常诡异。

(3)探索数据;

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

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

sum(text_is_the_duplicate) # == 2

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

# count 10000

但为什么eTa5KD-LTgQv6UT1 Zmijmw是出现次数最多的值呢?它只是从10 000个值中随机选择的结果。

以下是重复的文本:

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

freq 38

● 该列所有的行都不重复吗?

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

yelp_raw_data['type'].describe()

# count 10000

top This review is for the chain in general.

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

● 假:该行不满足条件。

本文由beat365亚洲官方网站发布于互联网资讯,转载请注明出处:Python-Pandas的简单使用beat365亚洲官方网站

关键词: