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删除数据
未完待续...
相关推荐
互联网上的猪40 分钟前
Excel计数、求和、统计、计算类函数
笔记·学习·excel
University of Feriburg42 分钟前
1-linux的基础知识
linux·笔记·学习·嵌入式实时数据库·嵌入式软件·初学者
暴龙胡乱写博客1 小时前
python三大库之---pandas(二)
开发语言·人工智能·python·pandas
Dovis(誓平步青云)1 小时前
【数据结构】排序算法(下篇·开端)·深剖数据难点
c语言·数据结构·学习·算法·排序算法·推荐算法
DKPT1 小时前
大数据与人工智能之大数据架构(Hadoop、Spark、Flink)
服务器·笔记·学习·架构·系统架构
2401_895610822 小时前
4.7学习总结 java集合进阶
学习
Y1nhl4 小时前
搜广推面经六十八
人工智能·pytorch·深度学习·学习·大数据技术
Hug Freedom.4 小时前
RISC-V AIA学习---IPI 处理器间中断
学习·risc-v
写代码的小王吧9 小时前
【安全】Web渗透测试(全流程)_渗透测试学习流程图
linux·前端·网络·学习·安全·网络安全·ssh
24白菜头10 小时前
C和C++(list)的链表初步
c语言·数据结构·c++·笔记·算法·链表