- 一、包安装
- 1.1 pylab包相关
- 1.2 PyEMD
- 1. 3 python 中tuple的修改
- 1.4 读取excel文件
- 二、一些基本语法
- 2.1 判断数据类型
- 三、常用的类
- 3.1 DataFrame
- 3.1.1 替换缺省值
- 3.1.2 取到某一行
- 3.1.3 取某一列
- 3.1.4 取某一行某一列
- 3.1.5 series转为dataframe
- 3.1.6 行列转置
- 3.1.7 获取行数和列数
- 3.2 取时间
- 3.3 np
- 3.3.2 np.array()函数
- 3.3.1 ravel()和flatten()
- 3.4 np.ones
- 3.5 np.convolve()
- 四、画图
- 4.1 经典模态分解
- 4.2 CEEMDAN处理数据
- 4.3 防止多个图出现在一个图框里
- 五、读取文件问题
- 5.1 读不了xlsx格式文件
matplotlib中含有pylab,不需要再pip install pylab,不然会出错。
1.2 PyEMDPyEMD安装的命令是:pip install EMD-signal
1. 3 python 中tuple的修改a = (1,2)
b = list(a)
b[0] = 3
a = tuple(b)
print(a)
print(a[0])
1.4 读取excel文件
import xlrd #引入库
wb=xlrd.open_workbook("C:/Users/Administrator/Desktop/b.xls") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet_num=wb.nsheets #获取excel里面的sheet的数量
sheet_names=wb.sheet_names() #获取到Excel里面所有的sheet的名称列表,即使没有sheet也能用。
sheet=wb.sheet_by_index(0) #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')
rows=sheet.nrows #获取sheet页的行数,一共有几行
columns=sheet.ncols #获取sheet页的列数,一共有几列
#获取第一行的数据
row_data=sheet.row_values(0) #返回给定的行数的单元格数据进行切片
col_data=sheet.col_values(1)#sheet.col_values(i):获取第i+1列数据
print(col_data[0])#输出这个数组中的第j个位置数据
print(col_data[1])
print(col_data[2])
#获取单元格的数据
#one_data=sheet.cell(row_index,col_index) #同样是通过索引的方式,cell(0,1)获取到的是第一行第二列的单元格数据
# cell_value=one_data.value #获取单元格的值
# cell_type=one_data.ctype #获取单元格的类型,在xlrd中,单元格的数据类型有6种,
二、一些基本语法
2.1 判断数据类型
- type
- instance
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型
三、常用的类
3.1 DataFrame
3.1.1 替换缺省值
参考: Pandas缺失值处理
df = data1.fillna(method='backfill') #用后面的值填充前面缺失的值
#df = data1.fillna(method='ffill') #用前面的值填充前面缺失的值
3.1.2 取到某一行
- 取单行
df.loc[0]
- 取多行
df.loc[0,2]
- 用iloc
print(df.iloc[0,:])
3.1.3 取某一列
参考:python行切片和列切片
- 取第一列
print(df.iloc[:,0])
3.1.4 取某一行某一列
print(df.iloc[0,0])
3.1.5 series转为dataframe
第1步:
pd.Dataframe(series, columns=[‘列名2’])
或
series.to_frame(name=‘列名2’)
第2步:
Dataframe.reset_index().rename(columns={‘index’:‘列名1’})
也可以
第1步:
pd.Dataframe(series)
或
series.to_frame()
第2步:
Dataframe.columns = [‘列名1’, ‘列名2’]
3.1.6 行列转置
DataFrame的行列转置
3.1.7 获取行数和列数#获取行数
df.shape[0]
# 或者
#获取列数
df.shape[1]
3.2 取时间
x=pd.date_range('2021-4-1 0:00:00',periods=2*11,freq='10MIN')
- 时间为横坐标,画图
# np.random.randn 标准正态分布的随机数,np.random.rand 随机样本数值
x=pd.date_range('2022-4-21 0:00:00',periods=2*11,freq='10MIN')
y = np.array(data1).flatten()
print(len(y))
# #自己加的代码
# tmp = list(x.shape)
# tmp[0] = 539
# x.shape = tuple(tmp)
plt.scatter(x,y) # plot(横坐标,纵坐标, 颜色)
plt.plot(x,y,'g') # plot(横坐标,纵坐标, 颜色)
3.3 np
3.3.2 np.array()函数
- ndarray是一个类,其默认构造函数是ndarray()。
array是一个函数,便于创建一个ndarray对象。 - np.array函数的作用:列表不存在维度问题,但数组是有维度的,而np.array()的作用就是把列表转化为数组,也可以说是用来产生数组。
- ravel()和flatten()是将多维数据展平为一维数据,功能相同,区别在于一个是引用 *** 作,一个是复制 *** 作。ravel()展平数据后,修改后面的数据会影响前面的数据,而flatten()展平数据后,不会影响前面的数据。
参考:python学习笔记之-展平函数ravel和flatten及两者的区别
3.4 np.onespython-Numpy学习之(二) numpy库(ones,zeros,eyes函数)
3.5 np.convolve()- 卷积函数库
numpy中的convolve的理解
四、画图 4.1 经典模态分解- 数据包
emd github
4.2 CEEMDAN处理数据import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.impute import KNNImputer
data = pd.read_excel('xx.xlsx', header=None)
data1 = data.replace({0: np.NaN})
#将图标内嵌到网络中
#%matplotlib inline
df = data1.fillna(method='backfill') #用后面的值填充前面缺失的值
#df = data1.fillna(method='ffill') #用前面的值填充前面缺失的值
# print(df.loc[0])
# print(type(df))
#print(df.ix[0,0])
print(type(data))
#%%
import numpy as np
from PyEMD import EEMD, EMD, Visualisation
import pylab as plt
from PyEMD import CEEMDAN
# 生成res的分解
IImfs = []
def ceemdan_decompose_res(data):
ceemdan = CEEMDAN()
ceemdan.ceemdan(data, max_imf=-1)
imfs, res = ceemdan.get_imfs_and_residue()
plt.figure(figsize=(12, 16))
# plt.subplot(imfs.shape[0]+3, 1, 1)
# plt.plot(data,'r')
for i in range(imfs.shape[0]):
#子图的位置,有1*imfs.shape[0]格子
plt.subplot(imfs.shape[0] + 3, 1, i + 1)
#绘图
plt.plot(imfs[i], 'g')
plt.ylabel("IImf %i" % (i + 1))
#把坐标平均分成几份
plt.locator_params(axis='x', nbins=10)
# 在函数前必须设置一个全局变量 IImfs=[]
IImfs.append(imfs[i])
#调整边距和子图的间距,hspace越大,子图越小
plt.subplots_adjust(hspace=0.8)
plt.subplot(imfs.shape[0] + 3, 1, imfs.shape[0] + 3)
plt.plot(res, 'g')
plt.ylabel("Res")
return res
print(np.array(df).ravel())
#ravel将数据处理为一维的,默认是按行优先,ravel('F'),按列优先
res=ceemdan_decompose_res(np.array(df).ravel())
4.3 防止多个图出现在一个图框里
plt.show()
五、读取文件问题
5.1 读不了xlsx格式文件
- 降低xlrd的版本
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)