【发布时间】:2021-08-26 14:25:58
【问题描述】:
我在分析非常大的矩阵时遇到问题。
我有 4 个大数字矩阵(介于 0 到 1 之间),每个矩阵包含超过 100,000 行,70-80 列。
我需要平均每一列,并根据列标题将它们添加到列表中。
我尝试使用 pandas 内置的 mean() 方法(输入是 pandas 数据帧),但运行时很疯狂(计算 单个 列的平均值需要数小时)而且我负担不起那个运行时间。 关于如何在正常运行时执行此操作的任何建议?
我在这里添加我的代码-
def filtering(data):
healthy=[]
nmibc_hg=[]
nmibc_lg=[]
mibc_hg=[]
for column in data:
if 'HEALTHY' in column:
healthy.append(data[column].mean())
elif 'NMIBC_HG' in column:
nmibc_hg.append(data[column].mean())
elif 'NMIBC_LG' in column:
nmibc_lg.append(data[column].mean())
elif 'MIBC_HG' in column and not 'NMIBC_HG' in column:
mibc_hg.append(data[column].mean())
【问题讨论】:
-
150,000 行不应该花那么长时间。您能否为相关列显示
df.info()的输出? -
您的处理过程一定有问题,或者数据类型异常。 1M 行的快速测试需要 15 毫秒
pd.DataFrame(np.random.random(size=1000000)).mean() -
你说得对,我的 CSV 文件有问题。谢谢大家!
标签: python pandas dataframe data-analysis