希望对你有帮助
您可以尝试几种方法并采取最适合您的方法。
1.在加载数据时指定所需的列。(就像Andy L. 回答)
df = pd.read_excel(fileAddress, header=0, sheet_name='Sheet1',
usecols=['Name', 'Numbers', 'Address'])
2。指定数据类型
对于每个数据读取操作,Pandas 都会自己完成识别数据类型的繁重工作。这会消耗内存和时间。此外,这需要一次读取整个数据。
为了避免它 - 指定你的列数据类型(dtype)
例子:
pd.read_csv('sample.csv', dtype={"user_id": int, "username": object})
pandas 中可用的数据类型
[numpy.generic,
[[numpy.number,
[[numpy.integer,
[[numpy.signedinteger,
[numpy.int8,
numpy.int16,
numpy.int32,
numpy.int64,
numpy.int64,
numpy.timedelta64]],
[numpy.unsignedinteger,
[numpy.uint8,
numpy.uint16,
numpy.uint32,
numpy.uint64,
numpy.uint64]]]],
[numpy.inexact,
[[numpy.floating,
[numpy.float16, numpy.float32, numpy.float64, numpy.float128]],
[numpy.complexfloating,
[numpy.complex64, numpy.complex128, numpy.complex256]]]]]],
[numpy.flexible,
[[numpy.character, [numpy.bytes_, numpy.str_]],
[numpy.void, [numpy.record]]]],
numpy.bool_,
numpy.datetime64,
numpy.object_]]
(如您所见,列表太长,因此如果您指定 dtypes 会加快您的工作速度)
3.如果您在数据中的数据转换方面需要帮助,您可以使用转换器。
(几乎像 2,2 的替代)。
在空值或空值等情况下,您可以在这里轻松处理。 (免责声明:我从未尝试过)
例子
def conv(val):
if not val:
return 0
try:
return np.float64(val)
except:
return np.float64(0)
df = pd.read_csv('sample.csv', converters={'COL_A':conv,'COL_B':conv})
4.分块读取数据总是有帮助的。
chunksize = 10 ** 6
for chunk in pd.read_csv('sample.csv', chunksize=chunksize):
process(chunk)
需要注意的一点是将每个chunk 视为一个单独的数据框。也有助于读取更大的文件,例如 4 GB 或 6 GB。
5.使用 pandas low_memery 选项。
使用 (low_memory=False) 明确告诉 pandas 将较大的文件加载到内存中,或者在您收到任何内存警告的情况下。
df = pd.read_csv('sample.csv', low_memory=False)