资环python数据处理

资环python数据处理,第1张

资环python数据处理
  • 一、包安装
    • 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格式文件

一、包安装 1.1 pylab包相关

matplotlib中含有pylab,不需要再pip install pylab,不然会出错。

1.2 PyEMD

PyEMD安装的命令是: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()的作用就是把列表转化为数组,也可以说是用来产生数组。
3.3.1 ravel()和flatten()
  • ravel()和flatten()是将多维数据展平为一维数据,功能相同,区别在于一个是引用 *** 作,一个是复制 *** 作。ravel()展平数据后,修改后面的数据会影响前面的数据,而flatten()展平数据后,不会影响前面的数据。

参考:python学习笔记之-展平函数ravel和flatten及两者的区别

3.4 np.ones

python-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的版本

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/718284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存