我们来讲一讲Numpy与Pandas的基本使用方法。
首先来讲一下Numpy,Numpy提供了一些非常有用的统计函数,比如Mean(numpy.mean)、Median(numpy.median)以及Standard deviation(numpy.std)。
import numpy as np
'''
下面的代码能帮助你使用Numpy,当你需要使用向量与数组的运算时,比如数组乘法,Numpy是很好的选择。而且Numpy优化较好,比直接使用Python中的list要快。
'''
'''
Numpy中数组和Python中的lists差不多,唯一的区别是Numpy数组中所有值必需是同一种类型,比如int或者float。
'''
# 把False改为True来运行这段代码
if False:
array = np.array([1, 4, 5, 8], float)
print array
print ""
array = np.array([[1, 2, 3], [4, 5, 6]], float) # a 2D array/Matrix
print array
'''
与Python中的list类似,你可以索引、分段、修改一个Numpy数组。
'''
# 把False改为True来运行这段代码
if False:
array = np.array([1, 4, 5, 8], float)
print array
print ""
print array[1]
print ""
print array[:2]
print ""
array[1] = 5.0
print array[1]
# 把False改为True来运行这段代码
if False:
two_D_array = np.array([[1, 2, 3], [4, 5, 6]], float)
print two_D_array
print ""
print two_D_array[1][1]
print ""
print two_D_array[1, :]
print ""
print two_D_array[:, 2]
'''
这里是一些关于Numpy数组的算术运算
'''
# 把False改为True来运行这段代码
if False:
array_1 = np.array([1, 2, 3], float)
array_2 = np.array([5, 2, 6], float)
print array_1 + array_2
print ""
print array_1 - array_2
print ""
print array_1 * array_2
# 把False改为True来运行这段代码
if False:
array_1 = np.array([[1, 2], [3, 4]], float)
array_2 = np.array([[5, 6], [7, 8]], float)
print array_1 + array_2
print ""
print array_1 - array_2
print ""
print array_1 * array_2
'''
除了标准的算术运算,Numpy也有一些其他的数学运算,比如计算平均数或者点乘。
'''
# 把False改为True来运行这段代码
if False:
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 ""
print np.dot(array_1, array_2)
下面来讲一下Pandas,Pandas的数据通常存储在DataFrame的数据框架中,现介绍一下Pandas的Series:
import pandas as pd
'''
下面的代码帮你了解Series的概念。
你可以把Series想成一维object,和array、list有点像。默认的它会为每一行分配一个索引标签,范围从0到N,这里N是总条数减一。
'''
# 将False改为True来创建一个Series对象
if False:
series = pd.Series(['Dave', 'Cheng-Han', 'Udacity', 42, -1789710578])
print series
'''
在创建series的同时,你也可以为每一条分配索引。
'''
# 将False改为True来看自定义索引
if True:
series = pd.Series(['Dave', 'Cheng-Han', 359, 9001],
index=['Instructor', 'Curriculum Manager',
'Course Number', 'Power Level'])
print series
'''
你可以使用索引来从Series中选择特定的序列
'''
# 将False改为True来看用索引选择特定序列
if False:
series = pd.Series(['Dave', 'Cheng-Han', 359, 9001],
index=['Instructor', 'Curriculum Manager',
'Course Number', 'Power Level'])
print series['Instructor']
print ""
print series[['Instructor', 'Curriculum Manager', 'Course Number']]
'''
你也可以使用bool型操作来选择Series中特定的项
'''
# 将False改为True来看bool型索引
if False:
cuteness = pd.Series([1, 2, 3, 4, 5], index=['Cockroach', 'Fish', 'Mini Pig',
'Puppy', 'Kitten'])
print cuteness > 3
print ""
print cuteness[cuteness > 3]
下面来介绍一下Pandas的Dataframe:
import numpy as np
import pandas as pd
'''
下面的代码能帮助你理解Pandas中的Dataframe。
你可以把Dataframe想成有行有列的表格,就像spreadsheet、数据库表或者R中的data.frame对象。
'''
'''
创建一个数据库可以把字典序的list来传给Dataframe构造器:
1) 字典的key值将会作为列名。
2) 相关的列值会填充到对应列名下。
'''
# 把False改为True来看Dataframes的创建
if False:
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
'''
Pandas同时也提供了一系列函数帮助你理解关于你数据框架的基本信息。比如:
1) dtypes: 从每一列获得数据类型。
2) describe: 用来看在dataframe中数字列的一些基本统计信息,比如count、mean、std等。
3) head: 显示数据集中的前5行
4) tail: 显示数据集中的最后5行
'''
# 把False改为True来看这些函数的使用
if False:
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.dtypes
print ""
print football.describe()
print ""
print football.head()
print ""
print football.tail()
下面介绍一下Pandas中索引数据框。
import pandas as pd
'''
你可以把DataFrame想成一组具有索引的Series集合,这会让你更容易选中你需要从DataFrame中选中的指定列。
同时要注意两点:
1) 选中DataFrame中单列会返回一个Series
2) 选中DataFrame中多列会返回一个DataFrame
'''
# 把False改为True来看Series的索引
if False:
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['year']
print ''
print football.year # football['year']的缩写
print ''
print football[['year', 'wins', 'losses']]
'''
有多种方法可以进行行选择。这里有一些通用的方法:
1) 切割
2) 个别的索引(通过loc或iloc)
3) bool型索引
你也可以同时通过bool操作符像&(and)或|(or)来连接多个选择的要求。
'''
# 把False改为True来看bool型索引
if False:
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.iloc[[0]]
print ""
print football.loc[[0]]
print ""
print football[3:5]
print ""
print football[football.wins > 10]
print ""
print football[(football.wins > 10) & (football.team == "Packers")]