Pandas_01基本数据结构(Series、DataFrame)

本文介绍Pandas库中两种核心数据结构Series和DataFrame的基本用法,包括创建方式、属性及使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本数据结构

1、Series:带标签(行索引)的一维同构数组
长度不可改变

2、DataFrame:既有行索引、又有列索引的二维异构数组
大小可变

二、Series的创建及其属性

1、创建Series数组

import pandas as pd
import numpy as np
'''
pd.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)

参数说明:
    data:数组
    index:行索引
    dtype:指定数组的数据类型
    name:Series对象的名称属性
    copy:默认为False,返回一个视图,如果Series对象元素发生变化,影响原数组data
          设置为True,则为深拷贝,Series对象元素发生变化不影响原数组data

函数作用:
    创建Series数组对象  
'''

data = np.arange(10)
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# 创建Series
p1 = pd.Series(data,index = ["No{}".format(i) for i in range(1,11)],name="Num")
p1
# No1     0
# No2     1
# No3     2
# No4     3
# No5     4
# No6     5
# No7     6
# No8     7
# No9     8
# No10    9
# Name: Num, dtype: int32

# 修改Series数组元素
p1[0] = 11
# 原数组数据发生变
data
# array([11,  1,  2,  3,  4,  5,  6,  7,  8,  9])

# 指定copy = True,则对Series数组进行修改不影响原数组data
p2 = pd.Series(data,index = ["No{}".format(i) for i in range(1,11)],name="Num1",copy = True)

通过字典创建Series数组

# 通过字典创建Series
p2 = pd.Series({"name":"Tom","class": '01',"age":18})
p2

# name     Tom
# class     01
# age       18
# dtype: object

2、Series数组的属性

  • index:索引(标签)
  • values:数组数据
  • name:数组对象的名称
  • shape:数组形状
  • dtypes:数组数据类型
  • ndim:数组的维度
index()
# 索引,一维数组形式存在
type(p1.index) # pandas.core.indexes.base.Index
p1.index

out:

Index(['No1', 'No2', 'No3', 'No4', 'No5', 'No6', 'No7', 'No8', 'No9', 'No10'], dtype='object')
values()
p1.values
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
name()
p1.name
# 'Num'
shape()
p1.shape
# (10,)
dtypes()
p1.dtypes
# dtype('int32')
ndim()
p1.ndim
# 1

三、DataFrame的创建及其属性

1、创建DataFrame数组

'''
d.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)

参数说明:
    data:数组
    index:行索引
    columns:列索引
    dtype:指定数组的数据类型
    copy:默认为False,返回一个视图,如果DataFrame对象元素发生变化,影响原数组data
          设置为True,则为深拷贝,DataFrame对象元素发生变化不影响原数组data

函数作用:
    创建DataFrame数组对象
'''
# 通过list创建DataFrames对象
d1 = pd.DataFrame(np.arange(10).reshape(2,5))
d1

不指定行索引和列索引,默认是从0开始的数字索引
在这里插入图片描述指定行索引、列索引:

index_label = ["Line{}".format(i) for i in range(1,3)]
column_label = ["Column{}".format(i) for i in range(1,6)]

# 通过list创建DataFrame对象,指定行索引和列索引
d1 = pd.DataFrame(np.arange(10).reshape(2,5),index = index_label, columns =  column_label)
d1

out:
在这里插入图片描述
通过字典创建DataFrame对象

# 同d2 = pd.DataFrame([{"name":"Lily", "age":"18"},{"name":"Tom", "age":"20"},{"name":"Ada", "age":"30"}])
d2 = pd.DataFrame({'name':['Lily','Tom','Ada'],'age':[18,20,30]})
d2

out:
字典中的key就是列索引
在这里插入图片描述2、DataFrame常用属性

  • pd.shape:形状
  • pd.index:行索引
  • pd.columns:列索引
  • pd.valus:数组值
  • pd.dtypes:数组数据类型
  • pd.ndim:数组的维度
  • T:转置

准备数据:

# 创建符合正态分布的10只股票5天的涨跌幅数据
stock_change = np.random.normal(0,1,(10,5))
# 格式化行索引
index_label = ["第{}只股票".format(i) for i in range(1,11)]
# 格式化列索引
column_label = ["第{}天".format(i) for i in range(1,6)]
# 创建DataFrame对象时指定行列索引
stock = pd.DataFrame(stock_change,index = index_label,columns = column_label)
stock

数据如下:
在这里插入图片描述

pd.shape
stock.shape
# (10, 5)
pd.index
stock.index
# Index(['第1只股票', '第2只股票', '第3只股票', '第4只股票', '第5只股票', '第6只股票', '第7只股票', '第8只股票',
#        '第9只股票', '第10只股票'],
#       dtype='object'
pd.columns
stock.columns
# Index(['第1天', '第2天', '第3天', '第4天', '第5天'], dtype='object')
pd.values
stock.values
# array([[ 0.04466589,  0.91545238, -0.23571362, -0.59849205, -1.84168231],
#        [ 0.96926706,  0.92734874, -2.00029467,  0.23596919,  0.08193627],
#        [-0.25711234, -0.24436507,  0.8807354 , -0.33498317, -0.52083976],
#        [ 0.07971122, -0.12289288,  0.82501248, -0.21310936,  1.16219933],
#        [ 1.02158754,  0.40847468, -0.42161008,  1.64059891, -1.25303294],
#        [-0.88134845,  0.30092855,  0.24451512,  1.02673738, -0.39671031],
#        [-0.04686787, -2.14212975,  0.5577116 ,  0.59497006,  0.92413479],
#        [ 0.18500676, -0.05566599,  0.59640247,  0.48294299, -0.51581298],
#        [ 0.52520155,  0.7675729 , -0.89949606, -1.57985854, -0.30597079],
#        [-1.46217115, -1.26883254,  2.17042292,  0.72868   ,  0.94855897]])
pd.T
# 转置 ,同stock.transpose()
stock.T

out:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值