import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from IPython import display
display.set_matplotlib_formats('svg')
# IPython.display 库中的一个函数,用于设置 matplotlib 图形的输出格式,是一种矢量图
#可以在不失真的情况下放大和缩小图片
filepath=r"D:\***苹果\***\channel_4.dat"
##设定要读取的dat文件的绝对路径
#中文目录可读取
data = pd.read_csv(filepath,sep=' ') #读取非压缩文档.dat,filepath为绝对地址
#对读入的dat数据按空格分列sep=' '
#https://deepinout.com/pandas/pandas-questions/532_pandas_read_data_dat_file_with_pandas.html
#data = pd.read_table('data.dat', header=None, sep=' ')
#data.head()
#其中,header=None 表示我们不需要文件的第一行作为文件头;sep=' '表示我们的数据文件以空格作为字段分隔符。
#如果想仅仅读取.dat文件的某几列,可以指定usecols参数。例如:
#data = pd.read_table('data.dat', header=None, sep=' ', usecols=[1, 3])
data.shape #文件的shape行列?
data.head() #文件前5行的数据
print(data.head(10)) #文件前10行数据
print(data.tail()) #文件末尾5行的数据
print(data.info()) #文件的信息
#给读入的data数据增加列名
#https://blog.csdn.net/qq_28077617/article/details/120144407
channel_name=['timestamp','power']
#channel_name=['timestamp']
data.columns=channel_name
print(data.head(10)) #文件前10行数据
#将时间戳数据变换为日期,并给列名date
#https://www.cnblogs.com/stycoding/p/14379499.html
data['date'] = pd.to_datetime(data['timestamp'],unit="s")
#用 pandas 中的 to_datetime() 将时间戳转化为日期
print(data.head(10)) #文件前10行数据
#将dataframe 存到指定的位置,指定的。dat文件名,注意绝对地址用\\间隔
#https://blog.csdn.net/HYQ666888999/article/details/112853262
data.to_csv('D:\\***苹果\\channel_4_t.dat', sep=' ', index=False)
#存到spyder默认的文件夹中则不需指定路径
#data.to_csv('channel_4_t.dat', sep=' ', index=False)
df_slice = data.loc[data.date=="2013-02-17 15:39:31"]
#按条件对数据中date列值为"2013-02-17 15:39:31"的进行切片
#Pandas读取某列、某行数据——loc、iloc用法总结
#https://blog.csdn.net/Bigboss7/article/details/118597351
# print(df_slice.info()) #文件的信息
#pandas如何将datetime64[ns] -是时间戳转换成的日期格式-转为字符串日期
#https://pythonjishu.com/tpjdoevfjjtrsdy/
data['ymd_date_str'] = data['date'].dt.strftime('%Y-%m-%d')
#将格式为datetime64[ns] 的列date数据生成新的列字符串数据日期格式为年-月-日
#生成的字符串数据格式的说明https://www.runoob.com/python/att-time-strftime.html
#可以指定年月日时分秒
print(data.info())
data.head()
data['md_date_str'] = data['date'].dt.strftime('%m-%d')
#将格式为datetime64[ns] 的列date数据生成新的列数据日期格式为月-日
print(data.info())
data.head()
print(data.tail())
per_day_slice = data.loc[data.ymd_date_str =="2013-02-17"]
#按照datafarme中的字符串的时间进行切片获取数据,可以整行提取或者指定列提取