# 数据科学Python基础

【AI科技大本营导读】Python的强大和灵活相信已经毋庸置疑了。那么数据科学中，我们又需要掌握哪些基础知识点才能满足使用需求呢？本文是国外一名数据科学博主的文章，文章不仅对Python中和数据科学有关的概念进行了解释，还配上了相应的示例代码和练习题目，非常适合想要入门数据科学的朋友。

▌Python中常见的数据类型

Python中有很多种数据类型。常见的数据类型有浮点型（float），整型（int），字符串型（str），布尔型（bool），列表（list）。

▌Python Lists

list是一个基本的序列类型，我们可以使用list存储一组包含任何数据类型的值，list虽然并不常用，但一个list可以包含各种数据类型。我们可以用“［］”创建：

fruits=["pineapple","apple","lemon","strawberry","orange","kiwi"]

list中的子集

start_index是子list的开始索引，该索引指向的元素会是所得到的子list的第0个元素。

end_index是子list的结束索引，该索引指向的元素不会被包含在子list中。end_index的默认值是列表长度。step为步长值，代表索引每次增加的值，默认值为1。如果step为负，则end_index默认值为-列表长度-1。如果不设置step，则返回结果将是从start_index开始至list末尾的所有元素。

fruits = ["pineapple","apple","lemon","strawberry","orange","kiwi"]

fruits[1]# apple

fruits[]#"pineapple"

fruits[-1]#"kiwi"

fruits[5]#"kiwi"

fruits[-3]#"strawberry"

# List slicing

fruits[::]# ["pineapple","apple","lemon","strawberry","orange","kiwi"]

fruits[:2]# ["pineapple","apple"]

fruits[-2:-1]# ["orange"]

fruits[3:]# ["strawberry","orange","kiwi"]

fruits[:4]# ["pineapple","apple","lemon","strawberry"]

fruits[:]# ["pineapple","apple","lemon","strawberry","orange","kiwi"]

fruits[::-1]# ["kiwi","orange","strawberry","lemon","apple","pineapple"]

fruits[::-2]# ["kiwi","strawberry","apple"]

fruits[::2]# ["pineapple","lemon","orange"]

# Understanding some default values

fruits[:6:1]# the same result as the result from fruits[::]

fruits[-1:-7:-1]# the same result as the result from fruits[::-1]

list的具体操作

# Add values to a list

fruits.append("peach")

fruits# ["pineapple","apple","lemon","strawberry","orange","kiwi","peach"]

fruits = fruits + ["fig","melon"]

fruits# ["pineapple","apple","lemon","strawberry","orange","kiwi","peach","fig","melon"]

# Change values from a list

fruits[:2] = ["grape","mango"]

fruits# ["grape","mango","lemon","strawberry","orange","kiwi","peach","fig","melon"]

# Delete values from a list

fruits.remove("mango")

fruits# ["grape","lemon","strawberry","orange","kiwi","peach","fig","melon"]

numbers = [10, 42, 28, 420]

numbers_copy = numbers

numbers_copy[2] = 100

numbers# [10, 42, 100, 420]

numbers_copy# [10, 42, 100, 420]

ratings = [4.5, 5.0, 3.5, 4.75, 4.00]

ratings_copy = ratings[:]

ratings_copy[0] = 2.0

ratings# [4.5, 5.0, 3.5, 4.75, 4.0]

ratings_copy# [2.0, 5.0, 3.5, 4.75, 4.0]

characters = ["A","B","C"]

characters_copy = list(characters)

characters_copy[-1] ="D"

characters# ["A", "B", "C"]

characters_copy# ["A", "B", "D"]

▌函数

defis_prime(n):

ifn

returnFalse

elifn

returnTrue

elifn %2==orn %3==:

returnFalse

current_number =5

whilecurrent_number * current_number

ifn % current_number ==orn % (current_number +2) ==:

returnFalse

current_number = current_number +6

returnTrue

▌方法

# String methods

text ="Data Science"

text.upper()# "DATA SCIENCE"

text.lower()# "data science"

text.capitalize()# "Data science"

# Lists methods

numbers = [1, 4, 0, 2, 9, 9, 10]

numbers.reverse()

numbers# [10, 9, 9, 2, 0, 4, 1]

numbers.sort()

numbers# [0, 1, 2, 4, 9, 9, 10]

numbers = [10, 30, 55, 40, 8, 30]

text ="Data Science"

numbers.index(8)# 4

text.index("a")# 1

numbers.count(30)# 2

text.count("i")# 1

▌Packages

NumPy用于高效的处理数组。

Matplotlib和seaborn是用于数据可视化的流行库。

scikit-learn是一个强大的机器学习库。

Python中默认有些软件包是预设的，但是也有很多Python中没有但是我们需要用到的软件包。如果我们想使用这些软件包，就必须先确认这个包已经安装过，或者使用pip命令（Python中预设的一个的软件包管理工具）进行安装。

Anaconda发行版是一个免费且易于安装的软件包管理器，环境管理器和Python发行版本，内置了1000多个免费社区支持的开源软件包。

Import语句

importnumpy

numbers = numpy.array([3,4,20,15,7,19,])

import numpy as np# np is an alias for the numpy package

numbers = np.array([3, 4, 20, 15, 7, 19, 0])# works fine

numbers = numpy.array([3, 4, 20, 15, 7, 19, 0])# NameError: name 'numpy' is not defined

#importthe"pyplot"submodule from the"matplotlib"packagewith alias"plt"

importmatplotlib.pyplotasplt

from numpy import array

numbers = array([3, 4, 20, 15, 7, 19, 0])# works fine

numbers = numpy.array([3, 4, 20, 15, 7, 19, 0])# NameError: name 'numpy' is not defined

type(numbers)# numpy.ndarray

▌NumPy

Numpy是Python用于科学计算的一个基础软件包，它运行速度很快且易于使用。这个包帮助我们对元素进行逐元素的计算。

Numpy数组-类型转换：

np.array([False,42,"Data Science"])# array(["False", "42", "Data Science"], dtype="

np.array([False,42], dtype = int)# array([ 0, 42])

np.array([False,42,53.99], dtype = float)# array([ 0. , 42. , 53.99])

# Invalid converting

np.array([False,42,"Data Science"], dtype = float)# could not convert string to float: 'Data Science'

Numpy数组有自己的属性和方法。还记得前面我们提到Python运算符在不同的数据类型上会有不同的表现吗？Numpy中，运算符的表现就是逐元素运算。

Numpy数组上的运算符：

np.array([37,48,50]) +1# array([38, 49, 51])

np.array([20,30,40]) *2# array([40, 60, 80])

np.array([42,10,60]) /2# array([ 21., 5., 30.])

np.array([1,2,3]) * np.array([10,20,30])# array([10, 40, 90])

np.array([1,2,3]) - np.array([10,20,30])# array([ -9, -18, -27])

Numpy数组的数据类型为：nump.ndarry，ndarray代表着n维数组。上述例子中使用的是一维数组，我们也可以创建2，3，4或更多维数组。我们也可以独立于数组的维度来获取数组的子集。下面将以2维数组为例，获取2维数组子集：

numbers = np.array([

[1, 2, 3],

[4, 5, 6],

[7, 8, 9],

[10, 11, 12]

])

numbers[2,1]# 8

numbers[-1,]# 10

numbers[]# array([1, 2, 3])

numbers[:,]# array([ 1, 4, 7, 10])

numbers[:3,2]# array([3, 6, 9])

numbers[1:3,1:3]# array([[5, 6],[8, 9]])

np.mean() –会返回数组内元素的算术平均值（元素的总和除以元素的长度）。

np.median() –会返回数组内元素的中位数（数组排完序后计算得到的中位数，如果数组长度为偶数，则返回数组两个中间值的平均值）

np.corrcoef() -返回相关系数矩阵。用于查看数据集中两个（数组长度相同的）变量之间是否存在相关性。

np.std() -返回标准差。

learning_hours = [1, 2, 6, 4, 10]

grades = [3, 4, 6, 5, 6]

np.mean(learning_hours) # 4.6

np.median(learning_hours) # 4.0

np.std(learning_hours) # 3.2

np.corrcoef(learning_hours, grades) # [[ 1. 0.88964891][0.88964891 1.]]

learning_hours的平均值是4.6。

learning_hours的中间值是4.0。

learning_hours的标准差是3.2。

Numpy中的一些基本的函数在Python的列表中也存在，如 np.sort() 和np.sum() 。但是需要注意的是，Numpy在数组中会强制执行单一类型，这会加快程序的计算速度。

▌练习

Numpy元素操作

Numpy的基本统计操作

• 发表于:
• 原文链接http://kuaibao.qq.com/s/20180220A08G9O00?refer=cp_1026
• 腾讯「云+社区」是腾讯内容开放平台帐号（企鹅号）传播渠道之一，根据《腾讯内容开放平台服务协议》转载发布内容。
• 如有侵权，请联系 yunjia_community@tencent.com 删除。

2021-05-17

2021-05-17

2021-05-17

2021-05-17

2021-05-17

2021-05-17

2018-07-02

2018-06-26

2018-05-16

2021-05-17

2021-05-17

2021-05-17