day21和day22学习Pandas库

文章目录

三、Pandas库

1、概述

  • Pandas 的出现使得 Python 做数据分析的能力得到了大幅度提升,它主要实现了数据分析的五个重要环节:加载数据、整理数据、操作数据、构建数据模型、分析数据

2、安装

python 复制代码
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple/

3、内置的数据结构

3.1 Series(一维数据结构)

  • Series 是带标签的一维数组,这里的标签可以理解为索引,但这个索引并不局限于整数,它也可以是字符类型,比如 a、b、c 等
3.1.1创建的语法
python 复制代码
pandas.Series( data, index , dtype , copy)
  • 参数:

    • data:一维数组
    • index:数据的索引,默认是0~n
    • dtype:数据类型,默认自动识别
    • copy:是否允许复制,默认False
  • 示例:

    python 复制代码
    import pandas as pd
    arr = pd.Series([1, 2, 3], ['a', 'b', 'c'])
    print(arr)
  • 输出

    python 复制代码
    a    1
    b    2
    c    3
    dtype: int64
3.1.2 访问数据
  • 标签切片取值,包含边界值
  • 示例:
python 复制代码
import pandas as pd
arr = pd.Series([1, 2, 3], ['a', 'b', 'c'])
print(arr['a'])  # 输出 1
print(arr['a':'b']) 
# 输出 
a    1
b    2
dtype: int64
3.1.3 遍历
  • 语法1:for idx in s.index:

    • 获取Series数组的元素标签(索引)
    • 示例:
    python 复制代码
    import pandas as pd
    s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
    for idx in s.index:
    	print(idx)
    # 输出 a b c  (三行)
  • 语法2:for v in s.values

    • 获取Series数组的所有元素(取值)
    • 示例:
    python 复制代码
    import pandas as pd
    s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
    for v in s.values:
        print(v) # 输出 1 2 3 (三行)
  • 语法3:for idx, val in s.items():

    • 获取Series数组的所有元素和对应标签
    • 示例:
    python 复制代码
    import pandas as pd
    s = pd.Series([1, 2, 3], ['a', 'b', 'c'])
    for idx, val in s.items():
        print(idx, val)
    # 输出
    a 1
    b 2
    c 3

3.2 DataFrame(二维数据结构)

  • DataFrame 是一种表格型数据结构,它既有行标签,又有列标签
3.2.1创建语法
函数名 参数
pd.DataFrame( data, index, columns, dtype, copy) data:一组数据(ndarray、series, map, lists, dict 等类型) index:索引值,或者可以称为行标签 columns:列标签,默认为 RangeIndex (0, 1, 2, ..., n) dtype:数据类型 copy:默认为 False,表示复制数据 data

字典嵌套数组,多个数组长度要一致

  • 示例1:

    python 复制代码
    import pandas as pd
    # 创建 DataFrame 对象
    data = {"name":['小米','小红','小紫'],"age":[18,19,20]}
    s = pd.DataFrame(data=data)
    print(s)
    # 输出
        name  age
    0   小米   18
    1   小红   19
    2   小紫   20

使用Series数组创建DataFrame数组,多个Series长度可以不同,最后取并值,缺值的位置补NaN。

  • 示例:

    python 复制代码
    import pandas as pd
    data = {
       "name":pd.Series(['zs','ls','ww'],['a','b','c']),
       "age":pd.Series(['10'],['a'])
    }
    s = pd.DataFrame(data=data)
    print(s)
    # 输出
      name  age
    a   zs   10
    b   ls  NaN
    c   ww  NaN
3.2.2取值和赋值
  • 只能一列一列的切片操作(垂直砍),不能水平砍切片
python 复制代码
import pandas as pd
data = {
   "name":pd.Series(['zs','ls','ww'],['a','b','c']),
   "age":pd.Series(['10'],['a'])
}
s = pd.DataFrame(data=data)  # 数据和上面的一样
# 输出列切片age======================
print(s['age'])
#输出
a     10
b    NaN
c    NaN
Name: age, dtype: object
# 添加一列======================
s['three'] = np.Series(["新列"],['a'])
print(s)
# 输出
   name  age three
a   zs   10   新列
b   ls  NaN   NaN
c   ww  NaN   NaN
  • s.assign()方法添加新列
python 复制代码
import pandas as pd
data = {
   "name":pd.Series(['zs','ls','ww'],['a','b','c']),
   "age":pd.Series(['10'],['a'])
}
s = pd.DataFrame(data=data)  # 数据和上面的一样
# =============插入新列======================
# 注意:这里列表长度要和Dataframe的行数一致,否则报错
s = s.assign(three = [1,2,3])
print(s)
# 输出
  name  age  three
a   zs   10      1
b   ls  NaN      2
c   ww  NaN      3
  • s.insert()在指定位置插入新列
  • 参数:
    • loc: 插入位置的列索引。
    • column: 新列的名称。
    • value: 要插入的 Series(数据)。
python 复制代码
import pandas as pd
data = {
   "name":pd.Series(['zs','ls','ww'],['a','b','c']),
   "age":pd.Series(['10'],['a'])
}
s = pd.DataFrame(data=data)  # 数据和上面的一样
# =============指定位置插入新列======================
# 使用 insert 方法在位置 1 插入新列 'D'
s.insert(1, 'D', [13, 14, 15])
print(result)
# 输出
  name   D  age
a   zs  13   10
b   ls  14  NaN
c   ww  15  NaN
3.2.3修改数据和列名
  • 修改数据:
python 复制代码
import pandas as pd
data = {
   "name":pd.Series(['zs','ls','ww'],['a','b','c']),
   "age":pd.Series([10],['a'])
}
s = pd.DataFrame(data=data)  # 数据和上面的一样
#==============修改age列 +10 ==============
s["age"] = s["age"] + 10
print(s)
# 输出 ----   NaN 参与任何数学运算的结果依旧是 NaN
  name   age
a   zs  20.0
b   ls   NaN
c   ww   NaN
  • 修改列名字
    • 修改原数组名字:s. columns = [newname]
    • 返回新数组:s.rename( columns={ "旧名":"新名" ,...} )
    • 示例:
python 复制代码
import pandas as pd
data = {
   "name":pd.Series(['zs','ls','ww'],['a','b','c']),
   "age":pd.Series(['10'],['a'])
}
s = pd.DataFrame(data=data)  # 数据和上面的一样
#=====s. columns = [newname] 直接修改原数组 ========
s.columns = ["A","B"]
print(s)
# 输出 -- 列 name和age 修改成 A和B
    A    B
a  zs   10
b  ls  NaN
c  ww  NaN
#== s.rename(columns={"旧名":"新名",....}) 生产新数组========
s2 = s.rename( columns={"A":"Z","B","x"} )
print(s2)
# 输出  
    Z    x
a  zs   10
b  ls  NaN
c  ww  NaN
3.2.4删除数据
未完待续...
相关推荐
我命由我123452 分钟前
Python Flask 开发问题:ImportError: cannot import name ‘Markup‘ from ‘flask‘
开发语言·后端·python·学习·flask·学习方法·python3.11
全栈陈序员37 分钟前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习
AA陈超1 小时前
枚举类 `ETriggerEvent`
开发语言·c++·笔记·学习·ue5
小六*^____^*1 小时前
虚拟列表学习
前端·javascript·学习
代码游侠1 小时前
学习笔记——IPC(进程间通信)
linux·运维·网络·笔记·学习·算法
apcipot_rain2 小时前
汇编语言程序设计 从0到1实战笔记
笔记
周小码2 小时前
我用一个周末,写了一个“反内卷“的极简笔记工具
笔记
惜.己2 小时前
前端笔记(三)
前端·笔记
charlie1145141912 小时前
如何把 Win32 窗口“置顶”(Windows + C++)
开发语言·c++·windows·笔记·学习·软件工程
名字不相符2 小时前
BUUCTF题目列表Misc题目(个人记录与学习)(第二页)
学习·misc·buuctf·萌新