zoukankan      html  css  js  c++  java
  • pandas 学习笔记

    pandas

    为什么要学习pandas

    numpy能够帮我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据(比如字符串、时间序列、图片等)。

    pandas的常用数据类型

    1. Series 一维,带标签数组
    2. DataFrame 二维,Series容器

    pandas之Series创建

    1. 通过列表

      t  = pd.Series(np.arange(10),index=list(string.ascii_uppercase[:10]))
      print(t)
      print(type(t))
      
      

      在这里插入图片描述

    2. 通过字典创建:

      temp_dict = {“name:"xiaohong","age":30,"tel":10086}
      
      t3 = pd.Series(temp_dict)
      
      print(t3)
      print(type(t3))
      

    pandas之Series切片和索引

    切片:直接传入start end 或者步长即可

    索引:一个的时候可以传入序号或index,多个的时候传入序号或者index的列表。

    pandas之Series的索引和值

    Series对象本质上由两个数组构成。一个数组构成对象的键(index,索引),一个数组构成对象的值(values),键→值

    对于一个陌生的series类型,如何知道他的索引和具体的值?

    t.index #得到索引
    t.values #得到值

    遇到不懂的方法时去看文档

    pandas 之读取外部数据

    pd.read_csv() # 读取csv文件

    pd.read_sql(sql_sentence,connection) #读取数据库中数据

    import pandas as pd
    df = pd.read_csv("路径")
    

    读取MongoDB呢?

    先安装环境:pip install pymongo

    from pymongo import MongoClient
    import pandas as pd
    
    client = MongoClient()
    collection = client["douban"]["tv1"]
    data = list(collection.find())
    
    t1 = data[0]
    t1 = pd.Series(t1)
    print(t1)
    

    pandas 之 DataFrame(二维数据)

    t = pd.DataFrame(np.arange(12).reshape(3,4))

    在这里插入图片描述

    DataFrame对象既有行索引,又有列索引

    行索引,表明不同行,横向索引,叫index,0轴,axis=0

    列索引,表明不用列,纵向索引,叫columns,1轴,axis=1

    指定行索引和列索引
    t = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))

    在这里插入图片描述

    1. DataFrame和Series有什么关系?
      DataFrame是Series的容器。

    2. Series能传入字典,那么DataFrame能够传入字典作为数据吗?

      d1 = {"name":["xiaoming","xiaohong"],"age":[20,22],"tel":[10086,10010]}
      pd.DataFrame(d1)
      t1 = pd.DataFrame(d1)
      type(t1)
      

      在这里插入图片描述

      d2 = [{"name":"xiaohong","age":22,"tel":10010},{"name":"xiaoming","age":20,"tel":10086}]
      
      print(d2)
      
      t2 = pd.DataFrame(d2)
      
      print(t2)
      

      在这里插入图片描述

    DataFrame 的基础属性

    df.shape #(行数 ,列数)

    df.dtypes #列数据类型

    df.ndim #数据维度

    df.index #行索引

    df.columns #列索引

    df.values #对象值,二维ndarray数组

    DataFrame整体情况查询

    df.head(3) #显示头部几行,默认五行

    df.tail(3) #显示末尾几行,默认五行

    df.info() #相关信息概览:行数,列数,列索引,列非空值个数,行类型,列类型,内存占用

    df.describe() #快速综合统计结果(数字类型):计数,均值,标准差,最大值,最小值,四份位数(25%,50%,75%)

    DataFrame中排序的方法

    按count_AnimalName从小到大排:
    df = df.sort_values(by="count_AnimalName")

    pandas取行或取列

    注意点:

    • 方括号中写数组,表示取行,对行进行操作
    • 写字符串表示取列的索引,对列进行操作

    pandas之loc

    df.loc 通过标签索引数据 标签:字符串

    df.iloc 通过位置获取数据 位置:123

    t = pd.DataFrame(np.arange(12).reshape(3,4),index=list("abc"),columns=list("wxyz"))
    
    t.loc["a","z"]
    
    type(t.loc["a","z"])
    
    t.loc["a"]
    
    t.loc["a",:]
    
    t.loc[:,"y"]
    
    t.loc[["a","c"],:]
    
    t.loc[:,["w","z"]]
    
    t.loc[["a","c"],["w","z"]]
    
    t.iloc[1]
    
    t.iloc[:,1]
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    赋值更改数据,可直接更改:t[1,1] = 0

    pandas之布尔索引

    不同条件之间需要用括号括起来

    df[(800<df["xx"])&(df["xx"] <1000)]

    • & 且
    • |或

    pandas之字符串方法

    在这里插入图片描述

    缺失数据处理

    对于NaN数据处理

    判断数据是否为Nan:pd.isnull(df),pd.notnull(df)

    • 处理方式1:删除NaN所在行列dropna(axis=0,how='any',inplace=False)

      • how :默认any,只要有就删除,all:当前行(列)全为NaN才删除
      • inplace:是否原地修改
    • 处理方式2:填充数据,t.fillna(t,mean()),t.fiallna(t,median()),t.fillna(0)

    处理为0的数据:t[t==0] = np.nan

    计算平均值等情况,nan是不参与计算的,但是0会。

  • 相关阅读:
    响应式布局
    C# 基础复习 二 面向对象
    C# 基础复习 一 数据类型
    .net 面试题
    Unity5.X 创建基本的3D游戏场景
    Unity5.X 编辑器介绍
    Unity5.X 开发资源介绍
    SignalR
    vue-cli
    Vue.js
  • 原文地址:https://www.cnblogs.com/l999q/p/12339746.html
Copyright © 2011-2022 走看看