Numpy memmap介绍
Numpy和memmap
首先,我们需要了解Numpy和memmap。Numpy是一个Python库,提供多维数组对象、各种派生对象(如掩码数组和矩阵),以及用于数组操作的各种函数。在Numpy中,数组数据是指针指向一个内存块,因此可以操作大型数据集。
而memmap是一个Numpy数组的子类,它将数组数据保存在磁盘上而不是内存中。它允许我们加载大型数组,而不必尝试将它们全部保存在内存中,从而避免了内存不足的问题。
在使用memmap之前,我们需要做一些准备工作:
import numpy as np
filename = 'test.dat'
shape = (1000, 1000)
此处,我们定义了一个1000*1000的矩阵和要保存的文件名。
接下来,我们创建一个memmap:
mmap = np.memmap(filename, dtype='float32', mode='w+', shape=shape)
此处,我们使用Numpy的memmap函数创建了一个名为test.dat的文件,并在其中创建了一个1000*1000的浮点数数组。我们指定了数组的dtype(数据类型)和mode(文件访问模式)。
现在,我们可以像使用普通数组一样使用memmap数组。例如,我们可以给它赋值:
mmap[0, :] = np.random.rand(1000)
此处,我们将第一行设为随机数。
现在,我们需要将memmap对象刷新并关闭:
mmap.flush()
del mmap
阅读更多:Numpy 教程
Pandas Series
接下来,让我们来了解一下Pandas Series。它是一种类似于一维数组的数据结构,可以存储任意类型的数据(整数、浮点数、字符串等)。每个元素都有一个索引,可以是整数或标签。Pandas Series是Pandas库的一个组件,是基于Numpy数组的。
创建Pandas Series非常简单。我们只需要传递一个数组和一个可选的索引:
import pandas as pd
data = np.array([1, 2, 3, 4])
s = pd.Series(data, index=['a', 'b', 'c', 'd'])
这将创建一个名为s的Pandas Series,其中包含数据[1, 2, 3, 4]和索引[a, b, c, d]。我们可以像访问Numpy数组一样操作它:
print(s[0]) # 1
print(s['a']) # 1
Pandas DataFrame
现在让我们来看看Pandas DataFrame。它是Pandas库中的另一种数据结构,可以看作是一个多维数组,行和列都有标签。每列可以存储不同的数据类型(整数、浮点数、字符串等),就像字典一样。
我们可以从以下方式之一创建DataFrame:
- 从Numpy数组创建
- 从Python字典创建
- 从外部文件读取
现在我们来看看如何从Numpy数组创建DataFrame。让我们创建一个3*3的数组:
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
我们可以将其转换为DataFrame:
df = pd.DataFrame(data, index=['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3'])
这将创建一个名为df的DataFrame,其中包含数据[[1, 2, 3], [4, 5, 6], [7, 8, 9]]和行名为row1、row2和row3,列名为col1、col2和col3。我们可以像访问字典一样访问列:
print(df['col1']) # row1 1
row2 4
row3 7
Name: col1, dtype: int64
注意到DataFrame输出了每一行的索引和对应列的值。
我们还可以按照行和列的标签选择元素。例如,我们可以选择第一行和第一列的元素:
print(df.loc['row1', 'col1']) # 1
我们还可以通过添加一个新列来向DataFrame添加数据:
df['col4'] = ['a', 'b', 'c']
这将创建一个名为col4的列,并将其添加到DataFrame中。我们可以像使用其他列一样使用它:
print(df['col4']) # row1 a
# row2 b
# row3 c
# Name: col4, dtype: object
可以注意到,col4列的数据类型被设置为object。这是因为它包含了字符串类型的数据。
我们还可以从外部文件中读取数据,并创建DataFrame。例如,我们可以从CSV文件中读取数据:
data_file = 'data.csv'
df = pd.read_csv(data_file)
这将读取名为data.csv的文件,并创建一个DataFrame对象。
总结
在本文中,我们了解了Numpy和memmap、Pandas Series以及Pandas DataFrame的基本知识。我们学习了如何使用这些结构来管理大型数据集,以及如何将它们保存到磁盘上。我们还学习了如何创建DataFrame,然后使用它来操作数据。在数据科学中,这些知识是非常重要的,因为它们可以帮助我们处理大型数据、进行数据分析和建模。
极客笔记