Concatenating/merging 个垂直文件 pandas
Concatenating/merging files vertically in pandas
我可以使用 NumPy 垂直堆栈连接目录中的所有文件。但与 pandas 相比需要很长时间(合并约 30 秒,而 pandas 合并仅消耗约 3 秒)
import numpy as np
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
array = np.loadtxt(files[0], delimiter='\t')
for file in files[1:]:
array = np.vstack((array, np.loadtxt(file, delimiter='\t')))
array.shape=(2000000,16)
# 这没问题,但与 pandas 相比需要更多时间
enter image description here
在 pandas 中,我可以调用目录中的所有文件,但在连接后 data.shape
不同于 array.shape
import pandas as pd
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
data = pd.concat((pd.read_csv(file, delimiter='\t') for file in files))
data.head()
data.shape
任何人都可以帮助我使用 pandas 修复数据的形状吗?提前致谢。
好的,这是一种垂直堆叠文件的混合方式,最后输出为 numpy 数组。这是
导入 os
导入时间
导入 glob
将 pandas 导入为 pd
将 numpy 导入为 np
将 matplotlib.pyplot 导入为 plt
路径 = "C:/Users/sys/PycharmProjects/test1"
开始 = time.time()
allFiles = glob.glob(os.path.join(path, "ILU-545*.txt"))
np_array_list = []
for file_ in allFiles:
df = pd.read_csv(file_, sep='\t', index_col=None, header=None)
np_array_list.append(df.values)
comb_np_array = np.vstack(np_array_list) # Array
BIG_data_frame = pd.DataFrame(comb_np_array) # Dataframe
print("Big Frame shape is: ", array.shape)
end = time.time()
print("Time Required (in sec) :", end - start)
这样Big Frame shape is: (57950000, 16)
和Time Required (in sec): 90.41600012779236
。
使用 np.vstack
(pandas 除外)需要更多时间:Time Required (in sec) : 1598.8368678092957
(慢 18 倍!!)对于相同形状的数组 : (57950000, 16)
。欢迎使用更快的方法来合并相同类型整数数据的文件。
我可以使用 NumPy 垂直堆栈连接目录中的所有文件。但与 pandas 相比需要很长时间(合并约 30 秒,而 pandas 合并仅消耗约 3 秒)
import numpy as np
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
array = np.loadtxt(files[0], delimiter='\t')
for file in files[1:]:
array = np.vstack((array, np.loadtxt(file, delimiter='\t')))
array.shape=(2000000,16)
# 这没问题,但与 pandas 相比需要更多时间
enter image description here
在 pandas 中,我可以调用目录中的所有文件,但在连接后 data.shape
不同于 array.shape
import pandas as pd
from glob import glob
files = sorted(glob('ILU-545*.txt'))
print(files)
data = pd.concat((pd.read_csv(file, delimiter='\t') for file in files))
data.head()
data.shape
任何人都可以帮助我使用 pandas 修复数据的形状吗?提前致谢。
好的,这是一种垂直堆叠文件的混合方式,最后输出为 numpy 数组。这是 导入 os 导入时间 导入 glob 将 pandas 导入为 pd 将 numpy 导入为 np 将 matplotlib.pyplot 导入为 plt 路径 = "C:/Users/sys/PycharmProjects/test1" 开始 = time.time()
allFiles = glob.glob(os.path.join(path, "ILU-545*.txt"))
np_array_list = []
for file_ in allFiles:
df = pd.read_csv(file_, sep='\t', index_col=None, header=None)
np_array_list.append(df.values)
comb_np_array = np.vstack(np_array_list) # Array
BIG_data_frame = pd.DataFrame(comb_np_array) # Dataframe
print("Big Frame shape is: ", array.shape)
end = time.time()
print("Time Required (in sec) :", end - start)
这样Big Frame shape is: (57950000, 16)
和Time Required (in sec): 90.41600012779236
。
使用 np.vstack
(pandas 除外)需要更多时间:Time Required (in sec) : 1598.8368678092957
(慢 18 倍!!)对于相同形状的数组 : (57950000, 16)
。欢迎使用更快的方法来合并相同类型整数数据的文件。