python的pandas数据分析处理基础学习

pandas学习

一、 pandas基础

1. 什么是pandas?

一个开源的python类库:用于数据分析、数据处理、数据可视化

  • 高性能
  • 容易使用的数据结构
  • 容易使用的数据分析工具

很方便和其他类库一起使用:

  • numpy:用于数学计算

  • scikit-learn:用于机器学习

2. pandas 的安装

方法一:

python 复制代码
pip3 install pandas

方法二:

python 复制代码
下载使用Python类库集成安装包:anaconda      link: https://www.anaconda.com
当今最流行的python数据分析发行版
已经安装了数据分析需要的几乎所有的类库0
3. pandas读取数据

pandas 需要先读取表格类型的数据,然后进行分析

数据类型 说明 pandas读取方式
csv ,tsv,txt 用逗号,tab分割的纯文本文件 pd.read_csv
excel 微软xls或者xlsx pd.read_excel
mysql 关系型数据库表 pd.read_sql
  • 读取csv文件

    python 复制代码
    import os
    import pandas as pd
    
    fpath = "E:\MyProject\DataAnalysis\my_pandas\Datas\cpu_temp.csv"
    # 读取csv文件的所有数据
    datas = pd.read_csv(fpath)
    # 查看前几行的数据  默认前5行
    da = datas.head()
    print(da)
    # 查看数据的形状,返回行和列
    ds = datas.shape
    print(ds)
    # 查看列名列表
    df = datas.columns
    print(df)
    # 查看索引列
    dg = datas.index
    print(dg)
    # 查看每列的数据类型
    dh = datas.dtypes
    print(dh)
4. Pandas数据结构
python 复制代码
import pandas as pd
import numpy as np
  • DataFrame:二维数据、整个表格、多行多列

    创建DataFrame的方法

    • 根据多个字典序列创建dataframe

      python 复制代码
      data = {
          'age':[23,45,32,56,32,54,22],
          'id': [1,2,3,4,5,6,7]
          'year': [1991,1992,1993,1994,1995,1996,1997]
      
      }
      d1 = pandas.DataFrame(data)
    • df.columns 和df.index

  • Series: 一维数据、一行或一列

    创建Series的三种方法:

    • 仅使用数据列表即可产生最简单的Series

      python 复制代码
      sl = pd.Series([1,'a',5.2,7])
    • 创建一个具有标签索引的Series

      python 复制代码
      s2 = pd.Series([1,'a',5.2,7], index=['d','e','f','g'])
    • 使用python字典创建Series

      python 复制代码
      sdata = {'a':3500,'b'=4566, 'c'=12556,'d'=12435}
      s3 = pd.Series(sdata)
5. Pandas 数据查询

Pandas查询数据的几种方法

  • df.loc 根据行,列的标签值查询

    • 使用单个标签值(label)查询数据

    • 使用值列表批量查询

    • 使用数值区间进行范围查询

    • 使用条件表达式查询

      python 复制代码
      df.loc[df["age"]<30,:]
      python 复制代码
      df.loc[(df['a']<=30) & (df['d']>=15) & (df[f]=='ssa')& (df['s']==1), :]
    • 调用函数查询

      python 复制代码
      df.loc[lambda df : (df['a']<30)& (df['d']>=15),:]
  • df.iloc 根据行,列的数字位置查询

  • df.where

  • df.query

注意:.loc既能查询,又能覆盖写入,强烈推荐

6. Pandas新增数据列
  • 直接赋值 修改列数值

    python 复制代码
    将第b列的含有@符合的值替换掉
    df.loc[:,"b"] = df["b"].str.replace("@","").astype('int32')

    计算差值新增一列插值

    python 复制代码
    df[:,"chazhi"] = df["a"] - df["b"]
  • df.apply

    python 复制代码
    index则axis=0  columns则axis=1
    
    
    def get_temp_type(x):
        if x["CPU0_Temp"]>60:
            return '高温'
        elif x["CPU0_Temp"] < 50:
            return '低温'
        return '常温'
    df.loc[:,'temp_type'] = df.apply(get_temp_type,axis=1)
    df['temp_type'].value_counts()
  • df.assign

    python 复制代码
    可以是lambda函数也可以是自定义函数
    df.assign(
        cpu0_huashi = lambda x :x['CPU0_Temp']*9/5 + 32,
        cpu1_huashi = lambda x: x['CPU1_Temp']*9/5 + 32
    
    )
  • 按条件选择分组分别赋值

    python 复制代码
    先创建空列(这里第一张创建新列的方式
    df["cup_type"] = ''
    df.loc[df['CPU1_Temp']- df['CPU0_Temp']>10,"cpu_type"] = "温差大"
    df.loc[df['CPU1_Temp']- df['CPU0_Temp']<=10,"cpu_type"] = "温差正常"
7. Pandas的数据统计函数
  • 汇总类统计

    python 复制代码
    提取所有数字列统计结果
    df.describe()
  • 唯一去重和按值计算

    • 唯一性去重

      一般不用于数值列,而是枚举,分类列

      python 复制代码
      df['b'].unique()
    • 按值计算

      df['a'].value_counts()

  • 相关系数和协方差

    用途(超级厉害):

    1. 两只股票,是不是同涨同跌?程度多大?正相关还是负相关?

    2. 产品销量的波动,跟哪些因素正相关、负相关,程度多大?

      对于两个变量X、Y

    • 协方差:衡量同向反向程度,如果协方差为正,说明X、Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X、Y反向变化,协方差越小说明反向程度越高

      python 复制代码
      df.cov()
    • 相关系数:衡量相似程度,当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,当相关系数为-1时,说明两个变量变化的反向相似度最大

      python 复制代码
      df.corr()
      
      df['a'].corr(df['b']) 查看a和b的相关系数
      df['a'].corr(df['b']-df['c'])
8. Pandas缺失值处理

pandas使用函数处理缺失值

  • isnull和notnull:检测是否为空值,可用于df和series

  • dropna:丢弃、删除缺失值 【下面是参数介绍】

    • axis:删除还是列,{0 or 'index',1 or 'columns'},default 0
    • how: 如果等于any则任何值为空都删除,如果等于all则所有值都为空才删除
    • inplace:如果为True则修改当前df,否则返回新的df
  • fillna:填充空值 【下面是参数介绍】

    • value:用于填充的值,可以是单个值,或者字典(key为列名,value是值)
    • method:等于ffill使用前一个不为空的值填充for word fill;等于bfill使用后一个不为空的值填充back word fill
    • axis:按行还是列填充,{0 or 'index',1 or 'columns'}
    • inplace:如果为True则修改当前df,否则返回新的df
相关推荐
AI视觉网奇几秒前
Detected at node ‘truediv‘ defined at (most recent call last): Node: ‘truediv‘
人工智能·python·tensorflow
GuYue.bing23 分钟前
网络下载ts流媒体
开发语言·python
牛顿喜欢吃苹果35 分钟前
linux创建虚拟串口
python
-Mr_X-42 分钟前
FFmpeg在python里推流被处理过的视频流
python·ffmpeg
-芒果酱-44 分钟前
KNN分类算法 HNUST【数据分析技术】(2025)
分类·数据挖掘·数据分析
一个不秃头的 程序员1 小时前
代码加入SFTP JAVA ---(小白篇3)
java·python·github
susu10830189111 小时前
python实现根据搜索关键词爬取某宝商品信息
爬虫·python
喜欢猪猪1 小时前
Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
android·python·adb
海绵波波1072 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
林的快手2 小时前
209.长度最小的子数组
java·数据结构·数据库·python·算法·leetcode