一、 需求
- 我们将excel整张表以json的格式保存到mysql df.to_json()
- 在使用的时候我们将查询的json转为dataframe df.read_json()
二、 优化前的思路
- 直接将excel转json保存到mysql
- 将查询的json转为dataframe
- 去掉异常数据同时将nan转为None
df.replace(to_replace=r'(^\s*$)|--', value=np.nan, regex=True, inplace=True)
df = df.where(df.notnull(), None)
当然一样
df = df.replace(to_replace=r'(^\s*$)|--', value=None, regex=True, inplace=True)
- 处理数据
df_ret = df[df['时间'] == y_][field_]
三、 及其拖速度过程 2 3 4
- 第2步 平均每次 0.004s
- 第3步 平均每次差不多也是 0.002s
- 第4步 平均每次差不多也是 0.002s 目前未解决
四、解决方案 针对 2 3
# 在保存数据库之前先将文件处理
# 将处理后的文件直接转为二进制类型 python的一个库pickle
df = pd.read_excel(self.base_path + code + '.xlsx')
df = df.replace(to_replace=r'(^\s*$)|--', value=None, regex=True, inplace=True)
df = pickle.dumps(df)
在使用的时候转回来
df = pickle.loads(你查询到的df二进制文件)
总结
-
之前平均每次查询结果15s现在为2.2秒
-
思路+技术缺一不可