资环python数据处理

一、包安装

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种,

1.5 读写xlsx

  • read_excel默认把第一行数据作为索引,第一列数据不管
df = pd.read_excel('./origin.xlsx',header=None)
  • 写入文件
data1.to_excel("./testw.xlsx",index=False)

1.6 dataframe转置

data.T

二、一些基本语法

2.1 判断数据类型

  • type
  • instance
type()不会认为子类是一种父类类型
isinstance()会认为子类是一种父类类型

三、常用的类

3.1 DataFrame

Pandas学习笔记-了解DataFrame

3.1.1 替换缺省值

参考: Pandas缺失值处理

df = data1.fillna(method='backfill')  #用后面的值填充前面缺失的值
#df = data1.fillna(method='ffill')  #用前面的值填充前面缺失的值

3.1.2 取到某一行

  • 根据索引读取某一行
df.iloc[0,:]
  • 根据行名取某一行
cold = data1.loc["col1",:];
  • 取多行
df.loc[0,2]
  • 用iloc
print(df.iloc[0,:])

3.1.3 取某一列

参考:python行切片和列切片

  • 取第一列
print(df.iloc[:,0])
  • 根据行名取某一列
cold = data1.loc[:,"col_name"];

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.1.8 判断为空

  • 判断某一列的值是否都为空
cold = data1.loc[:,"d"];
print(pd.isnull(cold).all())

3.1.9 读取某一行到某一列

import pandas as pd
data = pd.read_excel('./test.xlsx')
data1 = pd.read_excel('./test1.xlsx')

print(data)
print(data1)
var = data.iloc[[0,1], [0,1]];
print(data.iloc[0,0])
print("data")
print(var)
print("haha")

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

data = pd.read_excel('xx.xlsx', header=None)
data1 = data.replace({0: np.NaN})
#将图标内嵌到网络中
#%matplotlib inline
df = data1.fillna(method='ffill')  #用前面的值填充前面缺失的值
#df = data1.fillna(method='backfill')  #用后面的值填充前面缺失的值
import numpy as np
from PyEMD import EEMD, EMD, Visualisation
import pylab as plt
from PyEMD import CEEMDAN


# 生成res的分解
IImfs = []
def ceemdanCaulcate(data):
    ceemdanObj = CEEMDAN()
    ceemdanObj .ceemdan(data)
    imfs, res = ceemdan.get_imfs_and_residue()
    plt.figure(figsize=(4, 4))

    #     plt.subplot(imfs.shape[0]+2, 1, 1)
    #     plt.plot(data,'r')
    for i in range(imfs.shape[0]):
        #子图的位置,有1*imfs.shape[0]格子
        plt.subplot(imfs.shape[0] + 2, 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=ceemdanCaulcate(np.array(df).ravel())

4.3 防止多个图出现在一个图框里

plt.show()

五、读取文件问题

5.1 读不了xlsx格式文件

  • 降低xlrd的版本

5.2 参考文件

『Python』Excel文件的读取以及DataFrame的相关操作 (2)
使用Pandas处理excel文件-(4)读写excel表格

5.3 第一行,列作为标签使用

#header=0表示第一行作为列标签使用,index_col=0表示第一列作为行标签使用
data = pd.read_excel('4_2test.xlsx',header=0, index_col=0)

5.4 根据标签删除行列

  • 删除列
data2 = data1.drop(columns=["a","b"])

  • 删除行
data3 = data1.drop(index=["col1"])

5.5 获得dataframe的列名

print(data1.keys())
print(list(data1.columns))

5.6 遍历excel数据并删除空白列/行

  • 根据列名
    data1.columns
for i in data1.keys():
    colTmp =  data1.loc[:, i];
    #如果该列的所有数据都是空
    if(pd.isnull(colTmp).all() == True):
        #inplace=True则将改动在原数据生效
        data1.drop(columns=[i],inplace=True)
  • 根据行名,并且删除空白行
    data1.index
for i in list(indexList):
    colTmp =  data1.loc[i, :];
    #如果该列的所有数据都是空
    if(pd.isnull(colTmp).all() == True):
        #inplace=True则将改动在原数据生效
        data1.drop(index=[i],inplace=True)
print(data1)

六、安装包

6.1 命令

pip install EMD-signal
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值