栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

资环python数据处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

资环python数据处理

资环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.1.8 判断为空
    • 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格式文件
    • 5.2 参考文件
    • 5.3 第一行,列作为标签使用
    • 5.4 根据标签删除行列
    • 5.5 获得dataframe的列名
    • 5.6 遍历excel数据并删除空白列/行

一、包安装 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

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.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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/834610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号