numpy
numpy使矩阵的数据处理变得简单
numpy处理数据读入
使用numpy读入数据
import numpy
nfl = numpy.genfromtxt("nfl.csv", delimiter=",")
得到的nfl的数据类型为numpy.ndarray使用numpy创建数组
使用numpy.array()可以将列表转换为数组。如果输入一个列表可以将返回一个数组,如果输入一个列表的列表,可以得到一个二维数组获取数组的大小
matrix.shape会返回一个元组(a,b)代表这个矩阵的秩
如果是一个一维数组那么返回一个只有一个元素的元组获取numpy array的数据类型
array.dtype的属性值为array的数据类型按照特定类型读取数据
array只能含有一种数据类型,numpy.genfromtxt会预估数据类型,然后按照该类型将所有数据读取进来。如果有数据无法被转换为array的类型,这些数据会丢失
我们可以指定genfromtxt读取数据的类型,通过指定dtype的值。
import numpy
world_alcohol=numpy.genfromtxt("world_alcohol.csv",dtype="U75",skip_header=1,delimiter=",")
print(world_alcohol)-
分割数组
- 仅分割一个维度
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[:,0:2])
:分号匹配所有的行或列,此处选取了matrix数组中所有行中列的index为0和1的部分
即输出为
[
[5, 10],
[20, 25],
[35, 40]
]
第二个例子:
- 仅分割一个维度
matrix = numpy.array([ [5, 10, 15], [20, 25, 30], [35, 40, 45] ]) print(matrix[:,1])
会输出所有行中的第2列元素
- 分割两个维度时
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
print(matrix[1:3,0:2])
会选取matrix中第2行和第3行的第1列和第2列
Computation with NumPy
numpy.array的比较
#==比较运算符
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
matrix == 25
结果:
[
[False, False, False],
[False, True, False],
[False, False, False]
]
使用'=='比较符来进行array中数据的筛选
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
second_column_25 = (matrix[:,1] == 25)
print(matrix[second_column_25, :])
上述例子中打印的结果为数组中所有第二列为25的行
vector = numpy.array([5, 10, 15, 20])
equal_to_ten_or_five = (vector == 10) | (vector == 5)
这个例子为mulcondition之下的选择
得到的equal_to_ten_or_five中存储的数据为数组中每个元素等于10或者等于5的结果numpy中数据的替换
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
second_column_25 = matrix[:,1] == 25
matrix[second_column_25, 1] = 10
替换的结果为将matrix中第二列为25的元素替换为10numpy中数据类型的转换
使用array的内置函数astype()
vector = numpy.array(["1", "2", "3"])
vector = vector.astype(float)numpy中内置函数
array.sum()返回给定的一维数组中每个数据加起来的和,或者二维数组中所有行中每列元素加起来的和或者每列中每行元素加起来的和。我们利用axis的值来控制行和列,值为1代表操作在行元素上,值为0代表操作在列元素上
array.mean()返回给定的数组中的平均值,用法类似sum()函数
array.max()返回给定数组中的最大值
matrix = numpy.array([
[5, 10, 15],
[20, 25, 30],
[35, 40, 45]
])
matrix.sum(axis=1)
#result:[30, 75, 120]
numpy的优点:
数据的计算十分方便
数据类型的转换容易实现
数据的分割实现快捷
缺点:
所有的数据必须是一种类型
对数据的索引必须通过数字
Pandas
读入文件
pandas.read_csv("filename")查看文件内容
food_info.head(num)返回前num行数据元素
查看所有的元素,使用columns属性:food_info.columns
使用文件的shape属性可以查看文件的大小,shape属性返回一个元组,其中第一个值为行数,第二个值为列数-
DataFrame的切分
# DataFrame containing the rows at index 3, 4, 5, and 6 returned.
food_info.loc[3:6]
# DataFrame containing the rows at index 2, 5, and 10 returned. Either of the following work.
food_info.loc[[2,5,10]]
其中,loc函数的区间包括上边界和下边界
列的
columns = ["Zinc_(mg)", "Copper_(mg)"]
zinc_copper = food_info[columns]# Skipping the assignment. zinc_copper = food_info[["Zinc_(mg)", "Copper_(mg)"]]