春满大地,富贵花开。微雨众卉新,一雷惊蛰始。敬请关注微信公众号:AiryData。

数据科学Python速成之基础

Python Airy 2519℃ 0评论

前言

作为一个数据科学家,或者即将迈上数据科学的道路,会一门编程语言至关重要,在数据科学领域,谈论最多的便是Python和R语言,这两者并没有好坏之分,只是看个人习惯,有人说Python是给程序员用的,R语言是给统计学家用的,这两者并不冲突,到了后期,同时掌握这两门语言也很常见。
由于我个人之前一段时间一直在用Python来做数据分析,所以这里我分享一下Python相关的知识,请看正文。
Python基础
首先就是编程环境的选择,可以从python.org网站下载Python,对于初学者来说,推荐安装集成环境,比较好的是Python(x,y)和anaconda两种,而在数据科学方面,anaconda更好,这里由于我之前使用的版本是2.7,所以这里我也是使用这个版本,由于Python3.6的发布,Python2.7还是Python3的争议便会减小,所以看个人选择安装软件版本,但是基础知识都是一样,不影响学习。
Python的设计原则有着禅宗的味道,可以输入import this查看。最经典的几句如下:

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.

 

空白形式

一般编程语言使用大括号{}来分隔代码块,而Python使用缩进来书写:

1
2
3
4
5
6
7
       for i in [1, 2, 3, 4, 5]:
        print i                     #”for i” 是程序块的第一行,Python3中print(i)
        for j in [1, 2, 3, 4, 5]:
            print j                 #”for j” 是程序块的第一行
            print i+j               #”for j” 是程序块的最后一行
        print i                     #”for i” 是程序块的最后一行
    print "done looping"

 

这样让代码看起来干净整洁,(划重点)所以一定要非常小心格式,尽量用空格,有用tab键有时候会导致不同环境下格式错误。系统会省略方括号和圆括号中的空白。空表形式的一个后果是很难将代码复制并粘贴到Python中的shell。会报错:IndentationError:expected an indented block。因为解释器认为空行表示for循环的终结。

模块

Python中默写特征默认不加载,包含了语言本身的部分特征。如果想要使用,需要导入包含这些特征的模块。
比较简单的一种导入方式,比如导入正则表达式:
import re
my_regex = re.compile(“[0-9]+”, re.I)
这里re代表包含了处理正则表达式需要的函数与常量的模块。输入import之后,你可以通过加前缀re.来直接调用模块中的函数。
如果你想学习更多关于正则表达式的内容,请看我的另外两篇文章:
如果你的代码中已经有了不同的re,可以使用别名:
import re as regex
my_regex = regex.compile(“[0-9]+”, regex.I)
如果模块名比较长也可以使用别名。比如数据可视化模块matplotlib,标准转换如下:
import matplotlib.pyplot as plt
如果你只需要某个模块的特定值,直接显式导入即可:
from collections import defaultdict, Counter
lookup = defaultdict(int)
my_counter = Counter()
注意,变量不能和模块中的函数重名,后果严重。

 

算法

Python2.7默认整除,5/2等于2,所以需要除法时,需要在文件开头输入下面的语句:
from __future__ import division
这时,5/2等于2.5。上面这一句表示新除法,少数情况需要整除时,使用5//2表示。

 

函数

Python中用def来定义函数,比如:def double(x):return x*2
python函数是第一类函数,第一类函数意味着可以将它们赋值给变量,也可以像其他参数一样传递给函数:

1
2
3
4
def apply_to_one(f):
    return f(1)
my_double = double          #指向之前定义的函数
x = apply_to_one(my_double) #等于2

 

也很容易生成简短的匿名函数,或者lambda:y = apply_to_one(lambda x:x+4) #等于5
可以将lambda赋给变量,但是建议使用def。
有时候通过名字指定参数会有用:

1
2
3
4
5
def substract(a=0, b=0):
    return a - b
substract(10, 5) #返回5
substract(0, 5)  #返回-5
substract(b=5)   #返回-5

 

字符串

字符串可以用单引号或者双引号标注出来,但是一定要配对。
a = ‘data science’
a = “data science”
python用反斜线来为特殊字符编码,比如:
tab_string = “\t” #tab字符
len(tab_string) = 1
同样,如果你想让反斜线只是它本身,可以使用r””生成一个原始的字符串:
not_tab_string = r”\t” #t表示字符’\’和’t’
len(not_tab_string) = 2
多行字符串需要用三重(两重)引号:
multi_line_string = “””Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.”””

 

异常

Python中使用try和except来解决:

1
2
3
4
try:
    print 0 / 0
except ZeroDivisionError:
    print "cannot divide by zero"

 

 

列表

Python中最基本的数据结构是列表(list),一个列表是一个有序的集合。
int_list = [1, 2, 3]
fix_list = [“string”, 0.1, True]
list_of_lists = [int_list, fix_list, []]
我们可以用方括号对列表进行读值和赋值,
x = range(10)  #是列表[0, 1, 2,…., 9]
zero = x[0]
one = x[1]
nine = x[-1]
eight = x[-2]
x[0] = -1 #列表x现在是[-1, 1, 2,…., 9]

也可以用方括号来切片:
one-three = x[:3]   #[-1, 1, 2]
three-end = x[3:]   #[3, 4, …,9]
Python使用操作符 in 确认列表成员,(MySQL查询中也可以使用in 和not in):
1 in [1, 2, 3] #True
0 in [1, 2, 3] #False

串联列表:x = [1, 2, 3]
x.extend([4, 5, 6]) #x现在是[1,2,3,4,5,6]
列表加法:y = x + [4, 5, 6] #y现在是[1,2,3,4,5,6]
追加列表:x.append(0)。#x现在是[1,2,3,0]
列表赋值:x, y = [1, 2] #x=1, y=2,一一对应,不对应则会报错。

 

元组

元组是列表的亲表哥,元组使用圆括号(或者不用),元组不能修改,其他和列表一样。

1
2
3
4
5
6
7
my_list = [1, 2]
my_tuple = (1, 2)
other_tuple = 3, 4
try:
    my_tuple[1] = 3
except TypeError:
    print "cannot modify a tuple"

 

元组通过函数返回多重值

def sum_and_product(x,  y): return (x+y),(x*y)
sp = sum_and_product(2,3)#等于(5,6)
s,p = sum_and_product(5, 10)#s是15,p是50
元组(和列表)都可以进行多重赋值。

字典

Python另一种基本数据结构是字典,它将键和值联系起来。

1
2
3
4
5
6
7
8
9
10
11
12
13
empty_dict = {}
grades = {"tim": 80}#字典
try:
    k_grades = grades["k"]
except KeyError:
    print "no grade for k"

#赋值
grades["tim"] = 90
#查找所有值
dic_keys = dic.keys()#键的列表
dic_values = dic.values()#值的列表
dic_items = dic.items()#(键,值)元组的列表

 

字典的键不可改变,尤其是不能将列表作为键,如果要使用一个多维的键,应该使用元组或把键转换成字符串。

 

集合

另一种该数据结构是集合(set),它表示为一组不同的元素:
s = set()
s.add(1)#s现在是1
s.add(2)#s现在是{1,2}
s.add(2)#s现在还是{1,2}
集合我们一般用来去重操作。

 

控制流

Python同样可以用if…elif…else…来操作。
Python也有while循环,也可以使用continue和break。等等

 

真和假

Python的布尔数除了首字母大写之外,其他用法和大多数别的语言类似:
Python使用None来表示一个不存在的值,它类似别的语言中的null。

 

至此,Python中比较基础的知识和概念做了一个简单的介绍,这也为后续学习数据科学相关的知识奠定了一个基础,当然,这篇讲的比较浅显,因为网上相关的Python教程有很多,这里就不一一列举了,
如果你不想去找,欢迎你关注微信公众号回复Python获取Python全套视频教程。
希望通过上面的操作能帮助大家获取一些想要的数据。如果你有什么好的意见,建议,或者有不同的看法,我都希望你留言和我们进行交流、讨论。
如果想快速联系我,欢迎关注微信公众号:AiryData。

转载请注明:数据之美 » 数据科学Python速成之基础

喜欢 (6)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址