2018-05-15 22:04:17 qq_41597912 阅读数 802

上一篇文章带大家一起了解了Pandas库中的数据合并,本文是Python大数据与机器学习系列文章中的第16篇,将带大家一起了解一下Pandas库中的其他数据操作。

Pandas提供了很多针对数据的操作,本文列出一些非常常用的。



在这里还是要推荐下我自己建的Python开发学习群:483546416,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴

实战练习

在Jupyter Notebook上执行以下代码:

import pandas as pd

df = pd.DataFrame({'col1':[1,2,3,4],'col2':[444,555,666,444],'col3':['abc','def','ghi','xyz']})

df.head()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

获取唯一值

df['col2'].unique()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

获取非唯一值

df['col2'].nunique()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

获取每个值的个数

df['col2'].value_counts()

newdf = df[(df['col1']>2) & (df['col2']==444)]

newdf

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

应用函数

def times2(x):

return x*2

df['col1'].apply(times2)

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df['col2'].apply(lambda x:x*2)

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df['col3'].apply(len)

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df['col1'].sum()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

永久删除一列

del df['col1']

df

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df = pd.DataFrame({'col1':[1,2,3,4],'col2':[444,555,666,444],'col3':['abc','def','ghi','xyz']})

df.drop('col1',axis=1,inplace=True)

df

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

获取列名和索引

df.columns

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df.index

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

排序

df

df.sort_values(by='col2') #inplace=False by default

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

查找和检测Null值

df.isnull()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df.dropna()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

将Null值填充为其它值

import numpy as np

df = pd.DataFrame({'col1':[1,2,3,np.nan],

'col2':[np.nan,555,666,444],

'col3':['abc','def','ghi','xyz']})

df.head()

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

df.fillna('FILL')

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

data = {'A':['foo','foo','foo','bar','bar','bar'],

'B':['one','one','two','two','one','one'],

'C':['x','y','x','y','x','y'],

'D':[1,3,2,5,4,1]}

df = pd.DataFrame(data)

df

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

透视表:df.pivot_table(values='D',index=['A', 'B'],columns=['C'])

零基础入门到精通:Python大数据与机器学习之Pandas-数据操作

进度介绍

本系列文章共分为26个部分目前已经进行到了第6部分,所有内容计划如下:

  1. 预热

  2. 环境搭建

  3. Jupyter教程

  4. Python速成

  5. Python数据分析,NumPy库的使用

  6. Python数据分析,Pandas库的使用

  7. Python数据分析,Pandas库练习

  8. Python数据可视化,Matplotlib

  9. Python数据可视化,Seaborn

  10. Python数据可视化,Pandas内建数据可视化

  11. Python数据可视化,Plotly和Cufflinks

  12. Python数据可视化,Geographical Plotting

  13. 数据 Capstone 项目

  14. 机器学习介绍

  15. 线性回归

  16. 交叉验证与偏方差

  17. 逻辑回归算法

  18. k-近邻算法

  19. 决策树与随机森林

  20. 支持向量机

  21. k-means聚类

  22. 主成分分析

  23. 推荐系统

  24. 自然语言处理(NLP)

  25. Python大数据与Spark

  26. 神经网络(NN)与深度学习(DL)

  27.  

2019-03-21 13:53:22 duozhishidai 阅读数 338

近年来,Python在大数据中的应用越来越广泛,在招聘网站上的人才需求也占去了大数据领域半壁江山,那么学习Python大数据将来能从事什么岗位?我们要先从Python所能从事的应用说起。

Python是一种面向对象、解释型计算机程序设计语言。它有许多优点,最明显的是语法简洁而清晰和具有丰富和强大的类库。Python经常被称为胶水语言,这是因为它能够把用其他语言制作的各种模块很轻松地联结在一起。

简而言之,Python就是用来深度学习的一种编程语言。Python大数据专业能从事的领域有很多,如:Python全栈工程师,Python爬虫工程师,Python开发工程师,金融自动化交易,Linux运维工程师,自动化开发工程师,前端开发工程师,大数据分析和数据挖掘等。

下面就这些职位的职位要求举几个例子:

一、Python全栈工程师·关键字:VUE、react、angularjs、node、webpack·)熟悉XML,(x)HTML,CSS,JavaScript,JSON,jQuery/Ajax等Web页面技术·熟悉bootstrap等主流前端框架者优先·能够使用Echarts等主流图表工具·熟练使用Python,Django,具备2年以上实际开发经验;·熟悉MySQL数据库,能够熟练编写sql语句进行数据库查询·了解Redis,Mongo等非关系型数据库·能够相对独立自主的完成前端及部分后端开发任务·熟悉python爬网技术,熟悉Scrapy、BeautifulSoup等爬虫框架及工具,具有网络爬取相关实践经验者优先·了解R语音并能够将部分R脚本翻译成python脚本者优先

二、Python爬虫工程师·熟悉Linux系统,掌握Python等语·掌握网页抓取原理及技术,了解基于Cookie的登录原理,熟悉基于正则表达式、XPath、CSS等网页信息抽取技术·熟悉整个爬虫的设计及实现流程,有从事网络爬虫、网页信息抽取开发经验,熟悉反爬虫技术,有分布式爬虫架构经验·具有数据挖掘、自然语言处理、信息检索、机器学习背景者优先·熟悉ElasticSearch、Hadoop/Mysql,有多语言开发经验者优先

三、Linux运维工程师·熟悉shell,能编写日常脚本,熟悉perl或python者优先·掌握Linux系统下常用服务架设与维护·熟悉常用的高可用软件,如LVS,heartbeat,keepalived等·熟悉mysql的安装、优化,能够实现mysql的高性能和高可用·熟悉nagios、cacti、zabbix等常用监控软件还希望广大学员对学习Python大数据将来能从事什么岗位这一问题多做了解,为自己将来的就业早做准备。
  人工智能、大数据、云计算和物联网的未来发展值得重视,均为前沿产业,多智时代专注于人工智能和大数据的入门和科谱,在此为你推荐几篇优质好文:
大数据工程师培训,需要学习的有哪些课程?
http://www.duozhishidai.com/article-15081-1.html
大数据工程师就业培训哪个好?
http://www.duozhishidai.com/article-15082-1.html
java大数据与python大数据如何选择?
http://www.duozhishidai.com/article-12540-1.html


多智时代-人工智能大数据学习入门网站|人工智能、大数据、物联网云计算的学习交流网站

多智时代-人工智能大数据学习入门网站|人工智能、大数据、云计算、物联网的学习服务的好平台
2018-08-03 14:37:57 lmseo5hy 阅读数 866

数据分析是大数据的重要组成部分,在越来越多的工作中都扮演着重要的角色,Python可以利用各种Python库,如NumPy、pandas、matplotlib以及IPython等,高效的解决各式各样的数据分析问题,那么该如何学习Python数据分析呢?

大数据作为一门新兴技术,大数据系统还不完善,市场上存在的资料也很零散,只有少数大数据资深技术专家才掌握真正的大数据技术,老男孩教育徐培成老师拥有丰富的大数据实践经验,掌握大数据核心技术,大数据实战课程体系完善,能够让学员学到真本领!

老男孩教育Python与数据分析内容:

1. Python介绍、Python环境安装、Python体验

2. Python基础、语法、数据类型、分支、循环、判断、函数

3. Python oop、多线程、io、socket、模块、包、导入控制

4. Python正则表达式、Python爬虫实现

5. 行列式基础、转置、矩阵定义、矩阵运算、逆矩阵、矩阵分解、矩阵变换、矩阵的秩

6. Python对常用矩阵算法实现

7. Python常用算法库原理与使用、numpy、pandas、sklearn

8. 数据加载、存储、格式处理

9. 数据规整化、绘图与可视化

Python与数据分析是老男孩教育大数据开发课程的一部分,除此之外,老男孩教育大数据开发课程还包括:Java、Linux、Hadoop、Hive、Avro与Protobuf、ZooKeeper、HBase、Phoenix、Flume、SSM、Kafka、Scala、Spark、azkaban等,如此全面的知识与技能,你还在等什么?赶紧报名学习吧!

2019-05-20 15:35:14 chen801090 阅读数 1607

Python学习教程(Python学习视频_Python学习路线):Python数据结构

概述

数据结构是组织数据的方式,以便能够更好的存储和获取数据。数据结构定义数据之间的关系和对这些数据的操作方式。数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方式。

在这篇文章中,你将了解到多种数据结构以及这些数据结构在Python中实现的方式。
在这里插入图片描述

抽象数据类型和数据结构

数据结构是抽象数据类型(ADT)的实现,通常,是通过编程语言提供的基本数据类型为基础,结合相应的代码来实现。

通常来说,数据结构分为两类:原始数据结构和非原始数据结构,原始数据结构是用来表示简单的数据关系,非原始数据结构包含原始数据结构,同时,数据关系更加复杂,数据操作也更加复杂。

原始数据结构

原始数据结构 - 顾名思义 - 是最原始的或基本的数据结构。 它们是数据操作的构建块,包含纯粹,简单的数据值。 Python有四种原始变量类型:

  • Integers
  • Float
  • Strings
  • Boolean

Integers
您可以使用Integers表示数字数据,具体地说,可以使用从负无穷大到无穷大的整数

Float
“Float”代表“浮点数”。 您可以将它用于有理数,通常以十进制数字结尾,例如1.11或3.14。

请注意,在Python中,您不必显式声明变量或数据的类型。 那是因为Python是一种动态类型语言。 动态类型语言是对象可以存储的数据类型是可变的语言。

String
String是字母,单词或其他字符的集合。 在Python中,您可以通过在一对单引号或双引号中包含一系列字符来创建字符串。 例如:‘cake’,“cookie”等。您还可以对两个或多个字符串应用+操作来连接它们,就像下面的示例中一样:

x = 'Cake'
y = 'Cookie'
x + ' & ' + y #结果:'Cake & Cookie'

以下是您可以使用字符串执行的一些其他基本操作; 例如,您可以使用*重复字符串一定次数:

# Repeat
x * 2 #结果:'CakeCake'
您还可以切割字符串

z1 = x[2:] 
print(z1)

z2 = y[0] + y[1] 
print(z2)

# 结果
ke
Co

请注意,字符串也可以是字母数字字符,但+操作仍然用于连接字符串。

x = '4'
y = '2'
x + y

'42'

Python有许多内置方法或辅助函数来操作字符串。 替换子字符串,大写段落中的某些单词,在另一个字符串中查找字符串的位置是一些常见的字符串操作。 例如:

  • 大写首字母
     str.capitalize('cookie')
        'Cookie'

以字符为单位检索字符串的长度。 请注意,空格也计入最终结果:

str1 = "Cake 4 U"
str2 = "404"
len(str1)

8
  • 检查字符串是否数字
str1 = "Cake 4 U"
str2 = "404"
str1.isdigit()
False

str2.isdigit()
True
  • 替换
 str1 = "Cake 4 U"
    str2 = "404"
    str1.replace('4 U', str2)
    'Cake 404'

  • 查找子字符串
str1 = 'cookie'
    str2 = 'cook'
    str1.find(str2)
    
    0
    
    str1 = 'I got you a cookie'
    str2 = 'cook'
    str1.find(str2)
    
    12

Boolean
这种内置数据类型值为:True和False,这通常使它们可以与整数1和0互换。布尔值在条件和比较表达式中很有用,就像在下面的例子中一样:

x = 4
y = 2
x == y
False

x > y
True

x = 4
y = 2
z = (x==y)
if z:
    print("Cookie")
else:
    print("No Cookie")
No Cookie

数据类型转换

有时,你需要整型,但是接口返回给你的是字符串,这时,你就需要数据类型转换,Python里,可以使用type函数来查看数据类型。

i = 4.0
type(i)

float

当你把数据的类型改变时,就称作数据类型转换。数据类型转换分为两种:隐式转换和显示转换。

隐式数据类型转换
数据类型自动转换,不需要指定,编译器会为您处理。 看看以下示例:

# float
x = 4.0 
# integer
y = 2 
z = x/y
type(z)

float

在上面的示例中,您不必将x的数据类型显式更改为float以执行浮点值除法。 编译器隐式地为你做了这个。

显式数据类型转换
这种类型的数据类型转换是用户定义的,这意味着您必须明确地通知编译器更改某些实体的数据类型。例如:

x = 2
y = "The Godfather: Part "
fav_movie = y + x

TypeError
Traceback (most recent call last)

<ipython-input-51-b8fe90df9e0e> in <module>()
      1 x = 2
      2 y = "The Godfather: Part "
----> 3 fav_movie = y + x


TypeError: Can't convert 'int' object to str implicitly

上面的示例,没有明确的告诉编译器x,y的数据类型,编译器认为x为整型,y为字符串,当你试图连接字符串和整数,编译器报错了,这个问题你可以这样解决:

x = 2
y = "The Godfather: Part "
fav_movie = (y) + str(x)
print(fav_movie)

The Godfather: Part 2
python内置了一些类型转换函数:int(), float(), 和 str()

非原始数据结构

非原始数据结构的数据关系更加复杂,主要包括:

  • Arrays
  • Lists
  • Files

Arrays
首先,Python中的数组是一种收集基本数据类型的紧凑方式,数组中的所有条目必须具有相同的数据类型。 但是,与其他编程语言(如C ++或Java)不同,数组在Python中不常用。
一般来说,当人们在Python中谈论数组时,他们实际上是指List。 但是,它们之间存在根本区别。 对于Python,数组可以被视为存储某种数据列表的更有效方式。 但是,列表里的元素具有相同数据类型。
在Python中,数组由array模块支持,在使用前需要导入并初始化。 存储在数组中的元素受其数据类型的约束。 数组类型在数组创建期间指定,并使用类型代码指定,类型代码是单个字符,如下例中所示:

import array as arr
a = arr.array("I",[3,6,9])
type(a)

array.array
Lists

Python中的列表用于存储同类项的集合。 这些是可变的,这意味着您可以在不改变其身份的情况下更改其内容。 您可以通过方括号[和]来识别列表,其中包含以逗号分隔的元素。 列表内置于Python中:您无需单独调用它们。

x = []
type(x)

list

x1 = [1,2,3]
type(x1)

list

x2 = list([1,'apple',3])
type(x2)

list

print(x2[1])

apple

x2[1] = 'orange'
print(x2)

[1, 'orange', 3]

注意:就像您在上面的示例中看到的x1一样,列表也可以保存异构项,从而满足数组的存储功能。 除非您想对此集合应用某些特定操作。
Python提供了许多操作和处理列表的方法。 将新项添加到列表,从列表中删除一些项,排序或反转列表是常见的列表操作。 例如:

  • 使用append()将11添加到list_num列表中。 默认情况下,此数字将添加到列表的末尾。

     list_num = [1,2,45,6,7,2,90,23,435]
     list_char = ['c','o','o','k','i','e']
     
     list_num.append(11) 
     print(list_num)
    
[1, 2, 45, 6, 7, 2, 90, 23, 435, 11]
  • 插入数据
list_num.insert(0, 11)
print(list_num)
[11, 1, 2, 45, 6, 7, 2, 90, 23, 435, 11]
  • 删除元素
  list_char.remove('o') 
    print(list_char)
    
    ['c', 'o', 'k', 'i', 'e']
  • 根据索引删除元素
  list_char.pop(-2) # Removes the item at the specified position
    print(list_char)
    
    ['c', 'o', 'k', 'e']
    
    list_num.sort()
    print(list_num)
    
    [1, 2, 2, 6, 7, 11, 11, 23, 45, 90, 435]
    
    list.reverse(list_num)
    print(list_num)
    
    [435, 90, 45, 23, 11, 11, 7, 6, 2, 2, 1]

Array vs List

你可能想,既然List那么方便,为什么还要Array,这是因为由于Array存储的数据类型一致,可以通过简单的函数完成一些特殊的操作。例如

array_char = array.array("u",["c","a","t","s"])
array_char.tostring()
print(array_char)

array('u', 'cats')

您可以应用array_char的tostring()函数,因为Python知道数组中的所有项都具有相同的数据类型,因此操作在每个元素上的行为方式相同。 因此,在处理大量同类数据类型时,数组非常有用。 因为Python不必单独记住每个元素的数据类型细节; 对于某些用途,与列表相比,数组可能更快并且使用更少的内存。

在我们讨论数组的主题时,还值得提一下NumPy数组。 NumPy数组在数据科学领域中被广泛用于处理多维数组。 它们通常比数组模块和Python列表更有效。 在NumPy数组中读取和写入元素更快,并且它们支持“矢量化”操作,例如元素添加。 此外,NumPy数组可以有效地处理大型稀疏数据集。例如:

import numpy as np

arr_a = np.array([3, 6, 9])
arr_b = arr_a/3 # Performing vectorized (element-wise) operations 
print(arr_b)

[ 1.  2.  3.]

arr_ones = np.ones(4)
print(arr_ones)

[ 1.  1.  1.  1.]

multi_arr_ones = np.ones((3,4)) 
print(multi_arr_ones)

[[ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]
 [ 1.  1.  1.  1.]]

通常,列表数据结构可以进一步分类为线性和非线性数据结构。 堆栈和队列称为线性数据结构,而图形和树是非线性数据结构。 这些结构及其概念可能相对复杂,但由于它们与现实世界模型的相似性而被广泛使用。

注意:在线性数据结构中,数据项按顺序组织。 数据项一个接一个地遍历,并且可以在单次运行期间遍历线性数据结构中的所有数据项。 但是,在非线性数据结构中,数据项不是按顺序组织的。 这意味着元素可以连接到多个元素,以反映这些项目之间的特殊关系。 在单次运行期间,可能无法遍历非线性数据结构中的所有数据项。

Stack
堆栈是根据Last-In-First-Out(LIFO)概念插入和移除的对象的容器。 想象一下这样一种场景,即在一个有一堆盘子的晚宴上,总是在堆顶部添加或移除盘子。 在计算机科学中,这个概念用于评估表达式和语法分析,调度算法/例程等。

可以使用Python中的列表来实现堆栈。 将元素添加到堆栈时,它被称为推送操作,而当您删除或删除元素时,它被称为弹出操作。 请注意,当您在Python中使用堆栈时,实际上有一个pop()方法可供使用:

# Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack = [1,2,3,4,5] 
stack.append(6) # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 (Top)
print(stack)

[1, 2, 3, 4, 5, 6]

stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 -> 5 (Top)
stack.pop() # Bottom -> 1 -> 2 -> 3 -> 4 (Top)
print(stack)

[1, 2, 3, 4]

Queue
队列是根据先进先出(FIFO)原则插入和移除的对象的容器。 在现实世界中排队的一个很好的例子是售票柜台的线路,根据他们的到达顺序上车,因此首先到达的人也是第一个离开的人。
队列可以有许多不同的类型,但在本教程中仅讨论最基本的类型。 列表实现队列效率不高,因为列表末尾的append()和pop()速度很快, 但是,最后插入和从列表开头删除不是那么快,因为它需要元素位置的移动。

Graphs
数学和计算机科学中的图是由节点组成的网络,节点也称为顶点,它们可以相互连接,也可以不相互连接。 连接两个节点的线或路径称为边。 如果边缘具有特定的流动方向,那么它是有向图,方向边缘被称为弧。 否则,如果未指定方向,则该图形称为无向图。
这可能听起来非常理论化,当你深入挖掘时会变得相当复杂。 然而,图形是数据科学中特别重要的概念,通常用于模拟现实生活中的问题。 社会网络,化学和生物学的分子研究,地图,推荐系统都依赖于图形和图形理论原理。这有个Python实现图的例子:

graph = { "a" : ["c", "d"],
          "b" : ["d", "e"],
          "c" : ["a", "e"],
          "d" : ["a", "b"],
          "e" : ["b", "c"]
        }

def define_edges(graph):
    edges = []
    for vertices in graph:
        for neighbour in graph[vertices]:
            edges.append((vertices, neighbour))
    return edges

print(define_edges(graph))

[('a', 'c'), ('a', 'd'), ('b', 'd'), ('b', 'e'), ('c', 'a'), ('c', 'e'), ('e', 'b'), ('e', 'c'), ('d', 'a'), ('d', 'b')]

您可以使用Graph做一些很酷的事情,例如尝试找到两个节点之间存在路径,或者找到两个节点之间的最短路径,确定图形中的周期。

事实上,着名的“旅行商问题”是找到一个最短路径,它只访问每个节点一次并返回起点。 有时图形的节点或弧已经分配了权重或成本,您可以将其视为指定行走难度级别,并且您有兴趣找到最便宜或最简单的路径。

Tree
现实世界中的一棵树是一种生物,它的根在地上,树枝上有叶子、果实。树的分支以一种有组织的方式展开。在计算机科学中,树被用来描述数据如何被组织,除了根在顶部并且树枝,树叶跟随,向底部蔓延并且树被绘制为与真实树相比被倒置。

为了引入更多的符号,根始终位于树的顶部。后面的其他节点称为分支,每个分支中的最终节点称为叶。您可以将每个分支想象成一个较小的树本身。根通常称为父节点,它在其下面引用的节点称为子节点。具有相同父节点的节点称为兄弟节点。

树有助于定义现实世界场景,并且从游戏世界到设计XML解析器,以及PDF设计原则都基于树。在数据科学中,“基于决策树的学习”实际上构成了一个大范围的研究。存在许多着名的方法,如装袋,提升使用树模型来生成预测模型。像国际象棋这样的游戏构建了一棵巨大的树,其中包含所有可能的动作来分析和应用启发式方法来决定最佳操作。
在这里插入图片描述

class Tree:
    def __init__(self, info, left=None, right=None):
        self.info = info
        self.left  = left
        self.right = right

    def __str__(self):
        return (str(self.info) + ', Left child: ' + str(self.left) + ', Right child: ' + str(self.right))

tree = Tree(1, Tree(2, 2.1, 2.2), Tree(3, 3.1))
print(tree)

1, Left child: 2, Left child: 2.1, Right child: 2.2, Right child: 3, Left child: 3.1, Right child: None

Tuples
元组是另一种标准序列数据类型。 元组和列表之间的区别在于元组是不可变的,这意味着一旦定义,您就无法删除,添加或编辑其中的任何值。 这可能在您可能将控件传递给其他人但您不希望它们操纵集合中的数据但可能只是在数据副本中看到它们或单独执行操作的情况下有用。例如

x_tuple = 1,2,3,4,5
y_tuple = ('c','a','k','e')
x_tuple[0]

1

y_tuple[3]
x_tuple[0] = 0 # Cannot change values inside a tuple

---------------------------------------------------------------------------

TypeError
Traceback (most recent call last)

<ipython-input-74-b5d6da8c1297> in <module>()
      1 y_tuple[3]
----> 2 x_tuple[0] = 0 # Cannot change values inside a tuple


TypeError: 'tuple' object does not support item assignment

Dictionary
如果你想实现类似于电话簿的东西,字典是要使用的数据结构。 您之前看到的所有数据结构都不适用于电话簿。

这是一本字典可以派上用场的时候。 字典由键值对组成。

x_dict = {'Edward':1, 'Jorge':2, 'Prem':3, 'Elisa':4}
del x_dict['Elisa']
x_dict

{'Edward': 1, 'Jorge': 2, 'Prem': 3}

    x_dict['Edward'] # Prints the value stored with the key 'Kevin'.

1

您可以在词典上应用许多其他内置功能:

len(x_dict)

3

x_dict.keys()

dict_keys(['Prem', 'Edward', 'Jorge'])

x_dict.values()

dict_values([3, 1, 2])
Sets

集合是唯一对象的集合。 这些对于创建仅在数据集中包含唯一值的列表很有用。 它是一个无序的集合,但是一个可变的集合。

x_set = set('CAKE&COKE')
y_set = set('COOKIE')

print(x_set)

{'A', '&', 'O', 'E', 'C', 'K'}

print(y_set) # Single unique 'o'

{'I', 'O', 'E', 'C', 'K'}

print(x - y) # All the elements in x_set but not in y_set

---------------------------------------------------------------------------

NameError                                 Traceback (most recent call last)

<ipython-input-3-31abf5d98454> in <module>()
----> 1 print(x - y) # All the elements in x_set but not in y_set


NameError: name 'x' is not defined

print(x_set|y_set) # Unique elements in x_set or y_set or both

{'C', '&', 'E', 'A', 'O', 'K', 'I'}

print(x_set & y_set) # Elements in both x_set and y_set

{'O', 'E', 'K', 'C'}

Files
文件传统上是数据结构的一部分。 虽然大数据在数据科学行业中很常见,但是没有存储和检索先前存储的信息的能力的编程语言几乎没有用。在Python中读取和写入文件的语法与其他编程语言类似,但更容易处理。 以下是一些可帮助您使用Python处理文件的基本功能:

open()打开系统中的文件,文件名是要打开的文件的名称;
read()读取整个文件;
readline()一次读取一行;
write()将字符串写入文件,并返回写入的字符数; 和
close()关闭文件。
# File modes (2nd argument): 'r'(read), 'w'(write), 'a'(appending), 'r+'(both reading and writing)
f = open('file_name', 'w')

# Reads entire file
f.read() 

# Reads one line at a time
f.readline() 

# Writes the string to the file, returning the number of char written
f.write('Add this line.') 

f.close()

open()函数中的第二个参数是打开文件模式。 它允许您指定是要读取(r),写入(w),追加(a)还是读取和写入(r +)。

2017-07-13 21:40:30 J_H_S 阅读数 1162

01

假如你想成为一个数据科学家,或者已经是数据科学家的你想扩展你的技能,那么你已经来对地方了。本文的目的就是给数据分析方面的Python新手提供一个完整的学习路径。该路径提供了你需要学习的利用Python进行数据分析的所有步骤的完整概述。如果你已经有一些相关的背景知识,或者你不需要路径中的所有内容,你可以随意调整你自己的学习路径,并且让大家知道你是如何调整的。

02

步骤0:热身

开始学习旅程之前,先回答第一个问题:为什么使用Python?或者,Python如何发挥作用?
观看DataRobot创始人Jeremy在PyCon Ukraine 2014上的30分钟演讲,来了解Python是多么的有用。

03

步骤1:设置你的机器环境

现在你已经决心要好好学习了,也是时候设置你的机器环境了。最简单的方法就是从Continuum.io上下载分发包Anaconda。Anaconda将你以后可能会用到的大部分的东西进行了打包。采用这个方法的主要缺点是,即使可能已经有了可用的底层库的更新,你仍然需要等待Continuum去更新Anaconda包。当然如果你是一个初学者,这应该没什么问题。

如果你在安装过程中遇到任何问题,你可以在这里找到不同操作系统下更详细的安装说明。

04

步骤2:学习Python语言的基础知识

你应该先去了解Python语言的基础知识、库和数据结构。Codecademy上的Python课程是你最好的选择之一。完成这个课程后,你就能轻松的利用Python写一些小脚本,同时也能理解Python中的类和对象。

具体学习内容:列表Lists,元组Tuples,字典Dictionaries,列表推导式,字典推导式。
任务:解决HackerRank上的一些Python教程题,这些题能让你更好的用Python脚本的方式去思考问题。
替代资源:如果你不喜欢交互编码这种学习方式,你也可以学习PPV课训练营课程 python入门。这课程系列不但包含前边提到的Python知识,还包含了一些后边将要讨论的东西。

05

步骤3:学习Python语言中的正则表达式

你会经常用到正则表达式来进行数据清理,尤其是当你处理文本数据的时候。学习正则表达式的最好方法是参加谷歌的Python课程,它会让你能更容易的使用正则表达式。

任务:做关于小孩名字的正则表达式练习

如果你还需要更多的练习,你可以参与这个文本清理的教程。数据预处理中涉及到的各个处理步骤对你来说都会是不小的挑战。

06

步骤4:学习Python中的科学库—NumPy, SciPy, Matplotlib以及Pandas

从这步开始,学习旅程将要变得有趣了。下边是对各个库的简介,你可以进行一些常用的操作:

•根据NumPy教程进行完整的练习,特别要练习数组arrays。这将会为下边的学习旅程打好基础。
•接下来学习Scipy教程。看完Scipy介绍和基础知识后,你可以根据自己的需要学习剩余的内容。
•这里并不需要学习Matplotlib教程。对于我们这里的需求来说,Matplotlib的内容过于广泛。取而代之的是你可以学习这个笔记中前68行的内容。
•最后学习Pandas。Pandas为Python提供DataFrame功能(类似于R)。这也是你应该花更多的时间练习的地方。Pandas会成为所有中等规模数据分析的最有效的工具。作为开始,你可以先看一个关于Pandas的10分钟简短介绍,然后学习一个更详细的Pandas教程
您还可以学习两篇博客Exploratory Data Analysis with PandasData munging with Pandas中的内容。

额外资源:
•如果你需要一本关于Pandas和Numpy的书,建议Wes McKinney写的“Python for Data Analysis”
•在Pandas的文档中,也有很多Pandas教程,你可以在这里查看。

任务:尝试解决哈佛CS109课程的这个任务

07

步骤5:有用的数据可视化

参加CS109的这个课程。你可以跳过前边的2分钟,但之后的内容都是干货。你可以根据这个任务来完成课程的学习。

08

步骤6:学习Scikit-learn库和机器学习的内容

现在,我们要开始学习整个过程的实质部分了。Scikit-learn是机器学习领域最有用的Python库。这里是该库的简要概述。完成哈佛CS109课程的课程10到课程18,这些课程包含了机器学习的概述,同时介绍了像回归、决策树、整体模型等监督算法以及聚类等非监督算法。你可以根据各个课程的任务来完成相应的课程。

额外资源:

•如果说有那么一本书是你必读的,推荐Programming Collective Intelligence。这本书虽然有点老,但依然是该领域最好的书之一。
•此外,你还可以参加来自Yaser Abu-Mostafa的机器学习课程,这是最好的机器学习课程之一。如果你需要更易懂的机器学习技术的解释,你可以选择来自Andrew Ng的机器学习课程,并且利用Python做相关的课程练习。
•Scikit-learn的教程

任务:尝试Kaggle上的这个挑战

09

步骤7:练习,练习,再练习

恭喜你,你已经完成了整个学习旅程。

你现在已经学会了你需要的所有技能。现在就是如何练习的问题了,还有比通过在Kaggle上和数据科学家们进行竞赛来练习更好的方式吗?深入一个当前Kaggle上正在进行的比赛,尝试使用你已经学过的所有知识来完成这个比赛。

10

步骤8:深度学习

现在你已经学习了大部分的机器学习技术,是时候关注一下深度学习了。很可能你已经知道什么是深度学习,但是如果你仍然需要一个简短的介绍,可以看这里

我自己也是深度学习的新手,所以请有选择性的采纳下边的一些建议。deeplearning.net上有深度学习方面最全面的资源,在这里你会发现所有你想要的东西—讲座、数据集、挑战、教程等。你也可以尝试参加Geoff Hinton的课程,来了解神经网络的基本知识。

附言:如果你需要大数据方面的库,可以试试Pydoop和PyMongo。大数据学习路线不是本文的范畴,是因为它自身就是一个完整的主题。

final-1pyhon中文

原文链接:http://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-data-science-python/

转载请注明:人人都是数据咖 » 学习攻略 | Python数据挖掘学习路线图

没有更多推荐了,返回首页