【发布时间】:2020-12-08 04:52:53
【问题描述】:
我正在使用HTC 风速计,它按以下顺序为我提供数据,其中两列合并为一列,并且有一些我想排除的无用数据。 数据如下所示
"NO.","T&RH","DATA","UNIT","TIME"
1," 27�C 70.5%",0,"m/s","30-11-2020\15:33:34"
2," 27�C 70.5%",0,"m/s","30-11-2020\15:33:35"
3," 27�C 70.5%",0,"m/s","30-11-2020\15:33:36"
4," 27�C 70.5%",0,"m/s","30-11-2020\15:33:37"
...
...
当我尝试将其加载到 pandas 数据帧中时,会出现各种奇怪的错误。
我想出了以下代码来清理数据并将其导出为 df。
import pandas as pd
def _formathtc(text_data:list) ->pd.DataFrame:
data = []
for l in rawdata:
d = []
l = l.split(",")
try:
_,t,h = l[1].strip('"').split(" ")
d.append(t.replace("°C",""))
d.append(h.replace("%",""))
d.append(l[2])
d.append(l[-1].strip('\n'))
data.append(d)
except Exception as e:
pass
df = pd.DataFrame(data=data)
df.columns=['temp','relhum','data','time']
return df
def gethtc(filename:str)->pd.DataFrame:
text_data = open(filename, "r", encoding="iso-8859-1").readlines()
return _formathtc(text_data)
df = gethtc(somefilename)
我的问题是上面显示的操作是在线性时间内运行的,即随着文件大小的增长,提取信息并获取该数据帧所花费的时间更多。
如何提高效率?
【问题讨论】:
-
@anon01 数据通过设备随附的软件存储/记录到 csv 文件中。但是,我正在尝试提高之后发生的事情的效率,即从原始文件中修剪、拆分和重新形成另一个 df。我们不要考虑
read瓶颈。就性能而言,上述功能可以做得更好吗?肯定会分析代码
标签: pandas performance file-io big-o python-3.7