我是 python 新手,在 Eclipse 中使用 PyDev 我注意到每当我尝试执行我正在处理的代码时启动时间都非常慢。我将范围缩小到库导入。
例如,如果我运行以下代码
import timeit
startTime = timeit.default_timer()
import numpy as np
print("loaded numpy: ", timeit.default_timer() - startTime)
import pandas as pd
print("loaded pandas: ", timeit.default_timer() - startTime)
from pandas import ExcelWriter
print("loaded sub-pandas 1: ", timeit.default_timer() - startTime)
from pandas import DataFrame
print("loaded sub-pandas 2: ", timeit.default_timer() - startTime)
import timeit
print("loaded timeit: ", timeit.default_timer() - startTime)
from sqlalchemy.sql.expression import false
print("loaded sqlalchemy: ", timeit.default_timer() - startTime)
import os
print("loaded os: ", timeit.default_timer() - …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的数据框,其中有 100 年的日期作为列标题(即 ~36500 列)和 100 年的日期作为索引(即 ~36500 行)。我有一个函数可以计算数据帧的每个元素的值,该函数需要运行 36500^2 次。
好吧,问题不在于该函数是否非常快,而在于向数据帧分配值。即使我以这种方式分配一个常量,每 6 次分配也需要大约 1 秒。显然,正如你所见,我很厚:
for i, row in df_mBase.iterrows():
for idx, val in enumerate(row):
df_mBase.ix[i][idx] = 1
print(i)
Run Code Online (Sandbox Code Playgroud)
通常在 C/Java 中,我会简单地循环遍历 36500x36500 双循环,并通过索引直接访问预先分配的内存,这可以在恒定时间内实现,几乎没有任何开销。但这似乎不是 python 中的一个选项?
将这些数据存储在数据框中的最快方法是什么?无论是否是Pythonian,我只追求速度——我不关心优雅。
将带有时间戳的pandas系列转换为字符串非常简单,例如:
dateSfromPandas = dfC['Date324'].dt.strftime('%Y/%m/%d')
Run Code Online (Sandbox Code Playgroud)
但是,如何转换所有列均为日期的大熊猫数据框。上面的方法不适用于:
dateSfromPandas = dfC.dt.strftime('%Y/%m/%d')
Run Code Online (Sandbox Code Playgroud)