数据科学入门笔记:Numpy和Pandas

数据科学入门笔记:Numpy和Pandas

NumPy

Numpy在增加对多维数组和矩阵的支持方面很受欢迎。它还增加了很多基于python缺乏的数学函数。这些函数对于统计分析(数组的平均值,中值,标准偏差等)非常有用。数组对象类是Numpy的基础,Numpy数组就像Python中的列表,只不过数组中的每个东西都必须是相同类型的,比如int或float。

import numpy as np

array = np.array([1, 4, 5, 8], float)

print array

# a 2D array/Matrix

array = np.array([[1, 2, 3], [4, 5, 6]], float)

print array

>>> [1. 4. 5. 8.]
>>>[[1. 2. 3.]
[4. 5. 6.]]

您可以像使用Python列表一样索引,切片和操作Numpy数组。

import numpy as np

array = np.array([1, 4, 5, 8], float)

print array

print array[1]

print array[:2]

array[1] = 5.0

print array[1]

>>> [1. 4. 5. 8.]
>>> 4.0
>>> [1. 4.]
>>> 5.0

矩阵索引和切片的行动。

import numpy as np

two_D_array = np.array([[1, 2, 3], [4, 5, 6]], float)

print two_D_array

#print element in line 1 column 1

print two_D_array[1][1]

#print in line 1, all

print two_D_array[1, :]

#print all, in column 2

print two_D_array[:, 2]

>>> [[1. 2. 3.]
[4. 5. 6.]] 
>>> 5.0 
>>> [4. 5. 6.] 
>>> [3. 6.]

下面是你可以用Numpy数组做的一些算术运算。

import numpy as np

array_1 = np.array([1, 2, 3], float)

array_2 = np.array([5, 2, 6], float)

print array_1 + array_2

print array_1 - array_2

print array_1 * array_2

>>> [6. 4. 9.]
>>> [-4. 0. -3.] 
>>> [ 5. 4. 18.]

相同的算术操作,但这次与矩阵。

import numpy as np

array_1 = np.array([[1, 2], [3, 4]], float)

array_2 = np.array([[5, 6], [7, 8]], float)

print array_1 + array_2

print array_1 - array_2

print array_1 * array_2

>>> [[ 6. 8.] [10. 12.]]
>>> [[-4. -4.] [-4. -4.]] 
>>> [[ 5. 12.] [21. 32.]]

除了标准的关节手术操作之外,Numpy还

可以应用于Numpy阵列的一系列其他数学运算,例如

平均值和点积。

import numpy as np

array_1 = np.array([1, 2, 3], float)

array_2 = np.array([[6], [7], [8]], float)

print np.mean(array_1)

print np.mean(array_2)

print np.dot(array_1, array_2)

>>> 2.0
>>> 7.0 
>>> [44.]

Pandas

另一方面,pandas允许以适合于数据分析的方式来构造和操纵我们的数据。熊猫还从R中获取了很多最好的元素,并在Python中实现它们。

import pandas as pd

series = pd.Series(['Dave', 'Cheng-Han', 'Udacity', 42, -1789710578])

print series

0 Dave
1 Cheng-Han
2 Udacity
3 42
4 -1789710578

您还可以在创建系列时手动为系列中的项目分配索引,并使用索引从系列中选择特定项目。

import pandas as pd

series = pd.Series(['Dave', 'Cheng-Han', 359, 9001],

index=['Instructor', 'Curriculum Manager',

'Course Number', 'Power Level'])

print series

print series['Instructor']

print series[['Instructor', 'Curriculum Manager', 'Course Number']]

>>>
Instructor Dave
Curriculum Manager Cheng-Han
Course Number 359
Power Level 9001
>>> Dave
>>>
Instructor Dave
Curriculum Manager Cheng-Han
Course Number 359

您也可以使用布尔运算符从系列中选择特定的项目

import pandas as pd

cuteness = pd.Series([1, 2, 3, 4, 5], index=['Cockroach', 'Fish', 'Mini Pig',

'Puppy', 'Kitten'])

print cuteness

print cuteness > 3

print cuteness[cuteness > 3]

>>>
Cockroach 1
Fish 2
Mini Pig 3
Puppy 4
Kitten 5
>>>
Cockroach False
Fish False
Mini Pig False
Puppy True
Kitten True
>>>
Puppy 4
Kitten 5

通常情况下,Pandas中的数据包含在称为数据框架的结构中。数据框是带有列的二维标签数据结构,如果需要(字符串,整型,浮点型或布尔型)可以是不同的类型。例如 :


lossesteamwinsyear
05Bears112010
18Bears82011
26Bears102012
31Packers152011
45Packers112012
510Lions62010
66Lions102011
712Lions42012

要创建数据框,可以将列表字典传递给Dataframe

构造函数:

1)字典的键将是列名

2)关联列表将是该列中的值。

import pandas as pd

data = {'year': [2010, 2011, 2012, 2011, 2012, 2010, 2011, 2012],

'team': ['Bears', 'Bears', 'Bears', 'Packers', 'Packers', 'Lions',

'Lions', 'Lions'],

'wins': [11, 8, 10, 15, 11, 6, 10, 4],

'losses': [5, 8, 6, 1, 5, 10, 6, 12]}

football = pd.DataFrame(data)

print football

print football.dtypes

print football.describe()

print football.head()

print football.tail()

>>>
losses team wins year
0 5 Bears 11 2010
1 8 Bears 8 2011
2 6 Bears 10 2012
3 1 Packers 15 2011
4 5 Packers 11 2012
5 10 Lions 6 2010
6 6 Lions 10 2011
7 12 Lions 4 2012

有关数据框的一些基本信息。上面提到的代码中的一些功能是:

1)dtypes:获取每列的数据类型

2)describe:用于查看数据框的数字

列的基本统计信息

3)head:显示数据集的前5行

4) tail:显示数据集的最后五行

>>>
losses int64
team object
wins int64
year int64
dtype: object
>>>
losses wins year
count 8.000000 8.000000 8.000000
mean 6.625000 9.375000 2011.125000
std 3.377975 3.377975 0.834523
min 1.000000 4.000000 2010.000000
25% 5.000000 7.500000 2010.750000
50% 6.000000 10.000000 2011.000000
75% 8.500000 11.000000 2012.000000
max 12.000000 15.000000 2012.000000
>>>
losses team wins year
0 5 Bears 11 2010
1 8 Bears 8 2011
2 6 Bears 10 2012
3 1 Packers 15 2011
4 5 Packers 11 2012
>>>
losses team wins year
3 1 Packers 15 2011
4 5 Packers 11 2012
5 10 Lions 6 2010
6 6 Lions 10 2011
7 12 Lions 4 2012

请注意:

1)从DataFrame中选择单个列将返回一个Series

2)从DataFrame中选择多个列将返回一个DataFrame

print football['year']

# shorthand for football['year']

print football.year

print football[['year', 'wins', 'losses']]

>>>
0 2010
1 2011
2 2012
3 2011
4 2012
5 2010
6 2011
7 2012
Name: year, dtype: int64
>>> ... Same as above
>>>
year wins losses
0 2010 11 5
1 2011 8 8
2 2012 10 6
3 2011 15 1
4 2012 11 5
5 2010 6 10
6 2011 10 6
7 2012 4 12

行选择可以通过多种方式完成。一些基本和常用的方法是:

1)切片

2)单个索引(通过函数iloc或loc)

3)布尔索引

您还可以通过布尔

运算符(如&和)或| 来组合多个选择需求

print football.iloc[[0]]

print football.loc[[0]]

print football[3:5]

print football[football.wins > 10]

print football[(football.wins > 10) & (football.team == "Packers")]

>>>
losses team wins year
0 5 Bears 11 2010 
>>>
losses team wins year
0 5 Bears 11 2010 
>>>
losses team wins year
3 1 Packers 15 2011
4 5 Packers 11 2012
>>>
losses team wins year
0 5 Bears 11 2010
3 1 Packers 15 2011
4 5 Packers 11 2012
>>>
losses team wins year
3 1 Packers 15 2011
4 5 Packers 11 2012

相关推荐