转换与处理时间序列数据
转换字符串时间为标准时间:
Timestamp类型:最基础最常用。
pd.to_datetime(data['lock_time'])#转换
如果超出时间戳最大值,最小值,时间戳存储可能不成功 :
DatatimeIndex与PeriodIndex函数【其实俺暂时不懂这俩能干啥呜呜呜】
pd.DatetimeIndex(data['use_start_time'])
pd.PeriodIndex(data['use_start_time'],freq='S')
Timedelta类
不仅能够使用正数,也能使用负数;
可以轻松实现在某个时间上加减一天。
data['lock_time']+pd.Timedelta(days=1,seconds=1)#后移一天(无月,年)+1秒
使用分组聚合进行组内计算
groupby(): 使用groupby方法拆分数据;
如果传入的是一个函数,则对索引进行计算并分组。
看实操:(以下的东西比较硬核)
当我想连接数据库读取数据时报错了:(主打的就是想试试数据库了好久没用过了)
import pandas as pd#622
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root;123456root@127.0.0.1:3306/test/?charset=utf8')
没事,我们一个一个解决:
打开cmd,输入命令:
pip3 install pymysql
完了之后再运行好像就没有报错了:(后面有问题再解决)
然后读取数据:
嘿嘿,又报错啦,解决一下:
改了一会儿发现是代码有些地方写错了,修改如下:
import pandas as pd#622
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:123456root@58.0.20.242:3306/test?charset=utf8')
但是它依然有错误:
解决:(这是因为数据库没有导入该数据产生的错误)【以下步骤看不懂见后面详解1】
完了之后问题就解决完啦:
分组计算频数等其他操作:
在求和时遇到了一些问题,有小伙伴知道为啥可以为我解答一下,呜呜(难道是我导入数据的时候出问题了吗???)【已解决。文末附解决方案,见详解2,确实是导入的时候出问题勒,数据类型没有更换!】
使用agg方法聚合函数
agg()函数和aggregate()函数
可以使用agg方法一次求出当前数据中所有菜品销量和售价的总和与均值。
详解1:
打开俺们的navicat,建一个test数据库:
后面的步骤全部默认。(哈哈)
详解2:
在经过一段时间的琢磨后,我发现其实在前面读入数据的时候就已经产生一点错误了:
然鹅,NAN与NA的区别在于:(我简单理解为它们的数据类型不一样)
所以,我们就要让右边这个改过来~~~:【这里需要说明一下,如果用的是pandas直接的函数打开是没有问题的,出现问题是因为我是以连接数据库那种方式打开,所以产生了一点子问题。问题就在于前面说了个后面的步骤都默认哈哈哈】
改的方法:
很好,这样弄完了之后,前面的错误也都解决了不会出现像上面奇奇怪怪的数字了。
后面的正确数据都不截图了。(此期逻辑很混乱是因为俺不想重新理思路写勒,如果以后有机会做到类似的再出2.0版本)