当前位置: 首页 > article >正文

yjs09——pandas介绍及相关数据结构

1.什么是pandas

同样,pandas、matplotlib、numpy是python三大库,pandas就像是把matplotlib和numpy结合在一起,让数据以“表格”的形式表现出来,是一个强大的数据处理和分析库,它建立在NumPy库之上,提供了高效地操作大型数据集所需的数据结构和操作。

2.pandas库的引入

import pandas as pd

3.pandas 的数据结构

pandas主要有 Series、DataFrame、MutiIndex/panel三大结构


Series:一位数据结构

DataFrame:二维表格型数据结构

MultiIndex/panel:三维数据结构

Ⅰ.Series结构

        1.Series结构的建立

                a.正常方式建立:table=pd.Series(data,index=)

                b.不写index,默认为0,1,2,3...   table=pd.Series(data)

                c.字典方式建立:table=pd.Series({"key1":value,   "key2":value   ...})

        2.Series属性查看

                table.index   //查看索引名,没有括号

                table.value    //查看索引值,没有括号

        3.Series结构的样子:

                        



Ⅱ.DataFrame结构

1.建立

table=pd.DataFrame(data,index=,columns=)

table=pd.DataFrame({"key1":[v11,v21,v31...]  ,"key2":[v12,v22,v32] ....   })

2.属性

table.shape

table.index

table.columns

table.values

table.head(k)     //输出前k行

table.tail(k)         //输出后k行

3.行列索引的修改

a.更改原来的索引名称

table.index=[]

table.columns=[]

//要么全部修改,要么不修改,不能只修改某一行、列的索引名


b.重设索引(只能重设为0,1,2,3....)
        删除原来的索引,重设0,1,2...索引

        table1=table.reset_index(drop=True)

        不删除原来的索引,将原来的索引归成数据(不传参数时默认)

        table1=table.reset_index(drop=False)

//需要有新表接收,不是在原数据上操作

//只有reset_index,没有reset_columns


c.从原数据中取出一列作为索引
        删除原数据中作为新索引的数据

        table1=table.set_index(["name",''age''],drop=True)

        不删除原数据中作为新索引的数据

        table1=table.set_index("name",drop=False)

//需要有新表接收,不是在原数据上操作

//只有set_index,没有set_columns

//可以有多个索引



Ⅲ.MultiIndex结构

如果table是多索引的表,我们查看他的索引时:

table.index

结果:MultiIndex([(索引1.1, 索引2.1),
            (索引1.2, 索引2.2),
            (索引1.3, 索引2.3)],
           names=['索引1', '索引2'])

table.index.levels 

结果:【[索引1,索引1,索引1...],[索引2,索引2,索引2...]】

这里的索引1,2就不是一一对应的,如果索引1中有重复的,那就只显示一个,一般是按照从小到大排

代码

# pandas笔记
import numpy as np
import pandas as pd
from pandas import DataFrame

# 一、pandas之series数据结构
# 1.series结构的建立
data1 = np.random.randint(60, 100, 4)
index_1 = pd.Series(data1, index=["学生1", "学生2", "学生3", "学生4"])  # Series一定要大写!
# 字典法建立:
index_2 = pd.Series({"学生A": 90, "学生B": 80})
print(index_1)
print(index_2)

"""结果:
学生1    67
学生2    73
学生3    74
学生4    97
dtype: int32
-----------------
学生A    90
学生B    80
dtype: int64
"""

# 2.Series的属性
print(index_1.index)  # Index(['学生1', '学生2', '学生3', '学生4'], dtype='object')
print(index_1.values)  # [81 88 62 75]
print(index_1.head(2))
"""
    学生1    81
    学生2    88
    dtype: int32"""
print(index_1.tail(2))
"""
    学生3    62
    学生4    75
    dtype: int32"""

# 二.DataFrame数据结构
# 2.1建立
table_1 = DataFrame(np.random.randint(10, 25, (3, 4)), index=["上海", "广州", "深圳"],
                    columns=["11月1日", "11月2日", "11月3日", "11月4日"])
table_2 = DataFrame({"上海": [21, 22, 22, 27], "广州": [23, 22, 25, 27], "深圳": [21, 24, 27, 24]},
                    index=["11月1日", "11月2日", "11月3日", "11月4日"])  # 字典的key组成列索引
print(table_1)
print(table_2)
print(table_2.index)
print(table_2.columns)

# 2.2属性
print(table_1.shape)
print(table_1.index)
print(table_1.columns)
print(table_2.T)
print(table_1.head(1))
print(table_1.tail(2))

# 2.3重设索引
table = pd.DataFrame(np.random.randint(60, 100, (3, 4)), index=["张三", "李四", "王五"],
                     columns=["语", "数", "英", "政"])
print(table)

# 2.3.1 table.index
table.index = ["同学" + str(i) for i in range(3)]
print(table)

# 2.3.2 table.reset_index()
table = table.reset_index(drop=True)
print(table)

# 2.3.3 table.set_index("",)
table = table.set_index("语")
print(table)

table0 = table.set_index(["政","英"], drop=False)
print(table0)
print(table0.index)
print(table0.index.levels)

我遇到的问题:

1.数据结构大小写问题

Series、DateFrame、MultiIndex,这三个都是大写首字母

2.DataFrame的引进

from pd import DataFrame

3.索引的重设中,能不能重设列索引

只有table.columns=【】是重设列索引,reset、set_...都是对index改变

4.DataFrame索引问题

reset_index和 set_index都不是在原数据上改变,所以需要有接收的table变量

reset_index只能重设成0,1,2,3...

reset_index和set_index的drop含义不同

index、set_index、reset_index后的结果

5.当索引中有重复时

只显示一个,不重复显示,如果是表,重复的部分空着,如果是看属性结果,那么只输出一个

6.用字典法建立DataFrame结构时

key值是列索引,行索引是0,1,2,3...


http://www.kler.cn/a/328255.html

相关文章:

  • 【ArcGIS微课1000例】0127:计算城市之间的距离
  • Android WMS概览
  • 使用 Vue 和 Create-Vue 构建工程化前端项目
  • C++ lambda(匿名函数)捕获自己
  • DAO模式
  • Python小白学习教程从入门到入坑------第三十二课 生成器(语法进阶)
  • 基于深度学习的沉浸式体验增强
  • 【内网渗透】最保姆级的春秋云镜Flarum打靶笔记
  • Qt_绘图
  • 实验1.2 熟悉VRP基本操作
  • 基于深度学习的虚拟环境生成
  • 【SQL】未订购的客户
  • 用友U8 CRM 多个接口存在SQL注入漏洞
  • 开源 AI 智能名片 2+1 链动模式 S2B2C 商城小程序的数据运营策略与价值创造
  • 李宏毅机器学习2022-HW8-Anomaly Detection
  • 云手机可以解决TikTok运营的哪些问题?
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL67
  • 人工智能_机器学习099_PCA数据降维算法_SVD分解矩阵原理002_酉矩阵_共轭矩阵_全矩阵_符号翻转_奇异值分解代码实现---人工智能工作笔记0224
  • 使用OpenAI最新模型o1的6种方式,总有一种适合你!
  • docker pull 超时的问题如何解决
  • git直接推送项目到仓库
  • DDL 超时,应该如何解决 | OceanBase 用户问题集萃
  • 10.1 Linux_并发_进程基本知识
  • 如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法
  • ERROR [internal] load metadata for docker.io/library/openjdk:8
  • Spring Cloud Gateway接入WebSocket:实现实时通信