zoukankan      html  css  js  c++  java
  • 6-数据加载&Pandas绘图&Scipy初步

    数据加载

    • read_csv

      • pd.read_csv('../data/SMSSpamCollection', sep=" ", header=None)
      • sep分隔符,默认为逗号
      • header是否讲第一行作为表头行
    • read_table

      • pd.read_table('../data/SMSSpamCollection', header=None)
      • 默认sep为' ',制表符
        • Tab
    • read_excel

      • pd.read_excel('../data/test.xlsx',sheet_name=2,header=[0,1],index_col=[0,1])
        • sheet_name:Excel中的第几个sheet
        • header:取列索引
        • index_col:取行索引
    • 读取sqlite文件

      • import sqlite3
      • 连接sqlite
        • con = sqlite3.connect('../data/data.sqlite')
      • 读取
        • pd.read_sql('select * from Weather_2022 limit 10;',con,index_col='index')
      • 写入
        • w_2022.to_csv('w_2022.csv')
        • w_2022.to_json('w_2022.json')
        • w_2022.to_sql('w_New',con)
          • 写入sql文件
    • MySQL

      • 读取

        • import pymysql

          • conda install pymysql
        • 连接MySQL

          • db = pymysql.connect(host='localhost',port=3306,user='root',password='***',database='spider2003')
            
        • 读取

          • pd.read_sql('select * from tb_douban_movie',db)
        • 写入

          • from sqlalchemy import create_engine

          • engine = create_engine('mysql+pymysql://root:***@localhost/spider2003?charset=utf8')
            
          • 写入

            • w_2022.to_sql('w_New',engine)

    Pandas绘图

    • Series

      • s = Series([100,200,100,110,119,300,200])
      • s.plot()
      • s = Series(data=y,index=x)
      • s.plot()
    • DataFrame

      • df.plot()
    • 柱状图

      • Series柱状图示例,kind = 'bar'/'barh'
      • s = Series([100,200,300,100,230,478],index=['js','python','html','c','c++','java'])
      • s.plot(kind='bar') # 柱状图
      • s.plot(kind='barh') # 条形图
      • df.div(df_day,axis=0)
        • 注意使用div时改轴
    • 直方图

      • rondom生成随机数百分比直方图,调用hist方法
      • 柱高表示数据的频数,柱宽表示各组数据的组距
      • 参数bins可以设置直方图方柱的个数上限,越大柱宽越小,数据分组越细致
      • 设置density参数为True,可以把频数转换为概率
      • s = Series([1,1,2,2,2,3,3,3,4,5,6,6,6,7])
      • s.plot(kind='hist',bins=4,density=True)
      • kde图:核密度估计,用于弥补直方图由于参数bins设置的不合理导致的精度缺失问题
        • s.plot(kind='hist',bins=4,density=True)
        • s.plot(kind='kde') # 配合直方图,显示效果更好
    • 散点图

      • 散点图是观察两个一维数据数列之间的关系的有效方法,DataFrame对象可用

      • 使用方法: 设置kind = 'scatter',给明标签columns

        • df = DataFrame(
              data=np.random.normal(size=(1000,2)),
              columns=['A','B']
          )
          df.plot(kind='scatter',x='A',y='B')
          
        • 散点图矩阵,当有多个点时,两两点的关系

          • 使用函数:pd.plotting.scatter_matrix()
          • 参数diagnol:设置对角线的图像类型
          • pd.plotting.scatter_matrix(df)
          • 直方图改核密度图
            • pd.plotting.scatter_matrix(df,diagonal='kde')

    Scipy初步

    • scipy.fftpack模块

      • from scipy.fftpack import fft2, ifft2
        • fft2表示傅里叶变换
        • ifft2表示逆傅里叶变变换
      • scipy.fftpack模块用来计算快速傅里叶变换
        • 速度比传统傅里叶变换更快,是对之前算法的改进
      • 读取数据
        • moon = plt.imread('../data2/moonlanding.png')
      • 设置画布大小
        • plt.figure(figsize=(10,8))
      • 设置黑白
        • plt.imshow(moon,cmap='gray')
      • 快速傅里叶变换
        • 会得到复数,会得到频率
        • moon_fft = fft2(moon)
      • 设定阈值
        • a = 5000
        • 查找满足条件的值(噪点),将对应的值改成0
          • moon_fft2 = np.where(np.abs(moon_fft)>a,0,moon_fft)
      • 逆傅里叶变换,还原
        • moon_ifft = ifft2(moon_fft2)
      • 去除虚部,保留实部
        • moon2 = np.real(moon_ifft)
      • 绘图显示
        • plt.figure(figsize=(10,8))
        • plt.imshow(moon2,cmap='gray')
    • Scipy文件输入/输出

      • import scipy.io as spio
      • 存储到二进制文件mat
        • spio.savemat('moon.mat',mdict={'moon':moon,'moon2':moon2})
      • 使用spio.loadmat()读取数据
        • result = spio.loadmat('moon.mat')
    • 使用scipy处理wav文件

      • wav文件是高频音乐(无损音乐), 但音乐文件比较大
        • wav是微软定制的一种音频格式
      • from scipy.io import wavfile
      • 读取数据
        • hz, music1 = wavfile.read('../data2/邓紫棋-喜欢你.wav')
          • hz:44100,44.1KHZ,高保真音乐/无损音乐
      • 音乐大概的时长
        • 10776444/44100/60
      • 写入wav文件
        • wavfile.write('mix_music.wav', 44100, m)
    • 各种滤镜效果

      • from PIL import Image, ImageFilter

      • 打开图片

        • cat = Image.open('../data2/cat.jpg')
      • cat.filter(ImageFilter.BLUR)

      • cat.filter(ImageFilter.CONTOUR)

      • cat.filter(ImageFilter.DETAIL)

      • cat.filter(ImageFilter.SMOOTH)

      • cat.filter(ImageFilter.EMBOSS)

      • cat.filter(ImageFilter.SHARPEN)

      • '''
        blur 模糊, 
        contour轮廓  
        detail 细节增加 
        edge_enhance边缘强化
        emboss浮雕, 
        find_edges找到边缘, 
        sharpen锐化, 
        Smooth柔化
        '''
        
    • 使用scipy.ndimage图片处理

      • from scipy import misc, ndimage
        • 使用scipy.misc.face(gray=True)获取图片
      • 获取图片
        • face = misc.face()
      • 显示图片
        • plt.figure(figsize=(10,8))
        • plt.imshow(face)
      • shift对第一个维度/第二个维度/第三个维度做偏移
        • res = ndimage.shift(face,shift=(-300,-200,0),mode='wrap')
        • plt.figure(figsize=(10,8))
        • plt.imshow(res)
        • mode : {'reflect', 'constant', 'nearest', 'mirror', 'wrap'}
      • rotate旋转图片
        • res = ndimage.rotate(face,40)
        • plt.figure(figsize=(10,8))
        • plt.imshow(res)
      • 缩放图片
        • res = ndimage.zoom(face,zoom=1.2)
        • res = ndimage.zoom(face,zoom=(0.5,0.7,1))
        • plt.figure(figsize=(10,8))
        • plt.imshow(res)
      • 使用切片切割图片
        • res = face[200:400,500:800]
        • plt.figure(figsize=(10,8))
        • plt.imshow(res)
      • 加载图片,使用灰色图片misc.face()并添加噪声
        • face = misc.face(gray=True)
        • plt.figure(figsize=(10,8))
        • plt.imshow(face,cmap='gray')
        • face2 = face2.astype(np.float64)
        • face2 += np.random.randn(768,1024) * face.std() * 0.6
        • plt.figure(figsize=(10,8))
        • plt.imshow(face2,cmap='gray')
          • 将类型转换成float64
      • gaussian高斯滤波参数sigma:高斯核的标准偏差
        • sigma:取指定范围内的色素的平均值
        • g_face = ndimage.gaussian_filter(face2,sigma=1)
        • plt.figure(figsize=(10,8))
        • plt.imshow(g_face,cmap='gray')
      • median中值滤波参数size:给出在每个元素上从输入数组中取出的形状位置,定义过滤器功能的输入
        • size:取的几个色素中的中位数
        • m_face = ndimage.median_filter(face2,size=5)
        • plt.figure(figsize=(10,8))
        • plt.imshow(m_face,cmap='gray')
      • signal维纳滤波参数mysize:滤镜尺寸的标量
        • from scipy.signal import wiener
        • w_face = wiener(face2,mysize=6)
        • plt.figure(figsize=(10,8))
        • plt.imshow(w_face,cmap='gray')
  • 相关阅读:
    SpringBoot 添加JSP支持
    SpringBoot的过滤器和拦截器和全局异常处理
    SpringBoot日志配置-logback和log4j2
    SpringBoot使用thymeleaf模板
    乐观锁与悲观锁
    js中的val extinner 的区别
    centos7安装最新版node和npm
    ES2020,你需要知道的一切内容!
    U盘弹出文件或目录损坏且无法读取实测解决教程
    MySQL远程连接丢失问题解决方法
  • 原文地址:https://www.cnblogs.com/lotuslaw/p/14483147.html
Copyright © 2011-2022 走看看