数据分析工具

数据分析

matplotlib使用

  • matplotlib 能够将数据进行可视化,更直观的呈现

  • 基本使用

    # 先导入模块
    from matplotlib import pyplot as plt
    # 设置图片大小
    plt.figure(figsize=(20,8),dpi=80)
    # 绘制折线图
    plt.plot(x,y)  # xy为数据
    # 保存
    plt.savefig("./img1.png")
    #展示图形
    plt.show()
    
    • 设置中文显示

      • 先查看Linux下支持的中文字体:fc-list :lang=zh

        [外链图片转存失败(img-uJOet5aE-1564066022544)(https://FXHao.github.io/images/posts/sjfx/字体.png)]

      • 使用 matplotlib 库下的 font_manager 模块实例化一个对象

        my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/wqy/wqy-microhei.ttc")
        
      • 再在要显示中文的地方添加 fontproperties 参数

        plt.xlabel("时间",fontproperties=my_font)
        
    • 调整刻度

      _xticks = ["10点{}".format(i) for i in range(60)]  # 自定义刻度显示
      plt.xticks(list(x)      [::5],_xticks[::5],rotation=45,fontproperties=my_font)  # 调整刻度
      
    • 添加描述信息

      plt.xlabel("时间",fontproperties=my_font)
      plt.ylabel("温度 单位(度°)",fontproperties=my_font)
      plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)
      
    • 绘制网格

      plt.grid(alpha=0.4)  # alpha调整网格透明度
      
    • 同一幅图里绘制多个图

      • 要展示多个图,只需多几次plt.plot(x,y) ,传入不同的数据即可
    • 添加图例

      • 显示图形分别代表着什么

        plt.plot(x,y,label='xxx')  # 先设置label
        plt.legend()  # 注意,这里的显示中文的参数为 prop
        
    • 绘制散点图plt.scatter(x,y)

    • 绘制条形图

      • plt.bar() ===> 竖着的
      • plt.barh() ===> 横着的
      • 注意:多个条形图展示时需要左移右移
    • 更多的图形可以查看 matplotlib 官方文档

    • 前端框架绘图:百度ECHART

numpy

  • 在Python做科学计算的基础库,种在数值的计算

  • 创建数组

    import numpy as np
    
    t1 = np.array([1,2,3])
    t2 = np.arange(4)
    t3 = np.array(range(1,4),dtype=float)  # dtype指定数据类型
    t4 = t3.astype("int8")  # 调整数据类型
    t5 = np.array([random.random() for i in range(10)])  # 创建小数数组
    t6 = np.round(t5,2)  # 取两位小数
    
  • 数组的形状

    • 查看数组的形状:t6.shape
    • 修改数组的形状:t6.reshape()
  • 数组的计算

    • numpy 中,数组可以加减乘除
  • numpy 索引和切片

    • t[,] :在逗号前面,代表的是行(axis=0),后面代表的是列(axis=1)
    • 取行:t[2]
    • 连续多行:t[2:]
    • 不连续多行:t[[2,3,6]]
    • 取列:t[:,2]
    • 取值:t[2,3] ===> 第三行第四列的值
    • 多行多列:t[2:5,1:4] ====> 3–5行和2–4列交叉位置的数据
    • 多个不相邻的点:t2[[0,2],[0,1]] ====> 00 和 21
  • numpy 中数值的修改

    • 取到该值后重新赋值即可
    • 布尔索引:t[t<10] = 3 =====> 把 t 中小于10的值全部改为3
    • 三元运算符:np.where(t<10,0,10) ====> 把 t 中小于10的改为0,否则改为10
    • clip(裁剪):t.clip(10,18) ====> 小于10的替换为10,大于18的替换为18
  • Naninf

    • nan:表示不是一个数字
      • 当读取本地文档为 float 时,如果有缺失,就会出现nan
      • 当做了一个不合适的计算的时候(如无穷大减无穷大),结果就会是nan
      • np.nan 可以赋值nan,前提要是float类型
    • inf:表示正无穷 -inf
    • np.count_nonzero(t) =====> 可以得出 t 中不为0的个数
    • np.count_nonzero(t) =====> nan的个数
    • np.isnan(t) ======> 哪些值为nan
  • numpy 中的统计函数

    • 求和:t.sum()
      • t.sum(axis=0) ===> 列和
      • t.sum(axis=1) ===> 行和
    • 均值:t.mean()
    • 中值:np.median()
    • 最大值:t.max()
    • 最小值:t.min()
    • 极值:np.ptp() 即最大值和最小值只差
    • 标准差:t.std()
  • 数据拼接

    • 竖直拼接:np.vstack((t1,t2))
    • 水平拼接:np.hstack((t1,t2))
  • 数组的行列交换:

    • t[[1,2],:] = t[[2,1],:] =====> 行交换
    • t[:,[0,2]] = t[:,[]20] =====> 列交换
  • numpy实用方法:

    • 创建一个全0数组:np.zeros((3,4))

    • 创建一个全1数组:np.ones((3,4))

    • 对角线为1的正方形:np.eye(3)

    • 获取最大值最小值的位置:

      • np.argmax(t,axis=0)
      • np.argmin(t,axis=1)
    • numpy生成随机数

      • np.random.randint(10,20,(4,5)) ====> 10–20的范围,4行5列的形状

      • 随机种子

        np.random.seed(10)  # 随机中种子
        np.random.randint(10,20,(4,5))  # 之后的该条随机结果与之前的一样
        
        

pandas

  • 它不仅可以帮助我们解决数值型数据,还可以帮助我们解决数值型之外的数据

  • Series :一维,带标签数组

    • 创建Series

      import pandas as pd
      t = pd.Series([1,2,3,4,5],index=list("abcde"))  # index可以指定标签
      
      

      也可以用字典创建,只需把字典传进去,创建后,字典的键为标签,值为数组的值

    • t.index:可以取出索引(标签)

    • t.values:可以取出值

  • Pandas 读取外部数据:pd.read_csv("xxxx"),也可read 其它的文件

  • DataFrame :二维,Series 容器

    • DataFrame 方法

      df.shape行数,列数
      df.dtype列数据类型
      df.ndim数据维度
      df.index行索引
      df.columns列索引
      df.values对象值
      df.head(3)显示头几行
      df.tail(3)显示末尾几行
      df.info相关信息概览:行数、列数、列索引、列非空值个数、行类型、列类型、内存占用
      df.describe()快速综合统计结果:计数、均值、标准差、最大值、四分位数、最小值
    • 排序:df.sort_values(by="xxxx")

    • Pandas取行取列(二者可以合并使用)

      • df[:20] ====> 取行
      • df["age"] ====> 取列
    • lociloc

      • df.loc[["A","C"],["1","3"]] ====> 通过标签索引,AC行,13列
      • df.iloc[1] ===> 位置索引,第2行
      • df.iloc[:,2] ====> 第3列
      • df.iloc[:,[2,1]] ====> 第2、3列
    • Pandas 布尔索引

      • df.[df["age"]>18]
      • df.[(df["age"])&(df["age"]<20)] 多条件 & |
    • Pandas 字符串方法

      contains返回各字符串是否含有指定模式的布尔模型
      len计算各字符串的长度
      lower/upper大小写转换
      replace替换
      split拆分
    • Pandas 缺失数据处理

      • 判断依据:pd.isnull(df)pd.notnull(df)
      • 处理方式1:删除NaN
        • t.dropna(axis=0,how="any") any:只要改行有nan就删除改行 all:全部为nan才删除
      • 处理方式2:填充数据
        • t.fillna(t.mean()) ====> 填充全部的nan
        • t.["age"] = t["age"].fillna(t["age"].mean()) ===> 只充填age列中的Nan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值