Pandas的DataFrame基本使用详解

目录

1、DataFrame类型

2、DataFrame创建方式

3、DataFrame相关属性

4、DataFrame相关操作

4.1.列操作

获取列:

增加(修改)列:df[列索引] = 列数据

修改列

删除列

4.2.行操作

获取行

增加行:

修改行

删除行

4.3.行列混合操作综合应用(重点):

4.4.DataFrame结构

4.5.DataFrame运算(重点)

4.6.DataFrame排序(重点)

索引排序

值排序

4.7.DataFrame索引对象Index

4.8.DataFrame统计相关方法(重点)

4.9.unique 和 value_counts 


1、DataFrame类型

DataFrame是一个二维数据类型。由多行多列组成,每个列的类型可以不同。DataFrame既有行索引,也有列索引。

行索引和列索引其实都是index,但为了方便区分,创建时用index表示行索引,columns表示列索引,但本质上都是index。

操作DataFrame时需要导入的模块:

import numpy as np
import pandas as pd

# 忽略警告
import warnings
warnings.filterwarnings('ignore')

2、DataFrame创建方式

我们可以使用如下的方式创建(初始化)DataFrame类型的对象(常用):

  • 二维数组结构(列表,ndarray数组,DataFrame等)类型。
  • 字典类型,key为列名,value为一维数组结构(列表,ndarray数组,Series等)。

说明:

  • 如果没有显式指定行与列索引,则会自动生成以0开始的整数值索引。我们可以在创建DataFrame对象时,通过index与columns参数指定。
  • 可以通过head(n),tail(n)访问前 / 后n行记录(数据)。
  • 通过sample(n) 随机抽取n行
  • df.index.name = "index_name"  ,指定行索引名称
    df.columns.name = "columns_name" ,指定列索引名称

案例:

# 使用二维数据结构创建DataFrame。没有指定行列索引,自动生成行列索引。都是从0开始的自然数
array1 = np.random.rand(3, 5)
df = pd.DataFrame(array1)
display(df)

  0 1 2 3 4
0 0.878552 0.164219 0.934828 0.762890 0.283276
1 0.783461 0.969697 0.999134 0.557880 0.322521
2 0.775136 0.423268 0.051412 0.063281 0.863997

# 使用字典来创建DataFrame。一个键值对为一列。key指定列索引,value指定该列的值。
df = pd.DataFrame({"贵阳":[101,102,103],"杭州":[201,202,203],"广州":[301,302,303]})
display(df)

df = pd.DataFrame(np.arange(15).reshape((3,5)),index=list("abc"),columns=list("ABCDE"))    #指定行列索引
# 显示前N条记录
display(df.head(2))
# 显示后N条记录
display(df.tail(2))
# 随机抽取N条记录
display(df.sample(2))  

  

df = pd.DataFrame(np.random.rand(3, 5), index=["地区1", "地区2", "地区3"], columns=["北","上", "广","深", "杭"])
df.index.name = "index_name"    #指定行索引名称
df.columns.name = "columns_name"   #指定列索引名称
display(df)

df = pd.DataFrame(np.random.rand(3, 5), index=["地区1", "地区2", "地区3"], columns=["北","上", "广","深", "杭"])
# 注意Index首字母大写
idx = pd.Index(["GDP增长", "人口增长", "人才增长"], name = "index_name") #修改行索引index
df.index = idx
display(df)

3、DataFrame相关属性

  • index 索引
  • columns 列
  • values 值
  • shape 形状
  • ndim 维度
  • dtypes 数据类型

说明:

  • 可以通过index访问行索引,columns访问列索引,values访问数据,其中index与columns也可以进行设置(修改)。
  • 可以为DataFrame的index与columns属性指定name属性值。
  • DataFrame的数据不能超过二维。

案例:

df = pd.DataFrame(np.random.rand(3, 5), index=["GDP增长", "人口增长", "人才增长"], columns=["北","上", "广","深", "杭"])
display(df)

display(df.values, type(df.values))  # 返回DataFrame关联的ndarray数组
display(df.index)   # 返回行索引
display(df.columns)  # 返回列索引
display(df.shape) # 返回形状
display(df.ndim)  # 返回维度
display(df.dtypes)  # 返回各列的类型信息。

df.index = ["r1", "r2", "r3"]          #修改行索引
df.index.name = "index_name"  #给行索引起名
df.columns.name = "columns_name"  #给列索引起名
display(df)

4、DataFrame相关操作

4.1.列操作

df = pd.DataFrame(np.random.rand(5, 5), columns=list("abcde"), index=list("hijkl"))
display(df)

  • 获取列:

    • df[列索引]
    • df.列索引
    • df.iloc[:,:]
  • 案例:

# 获取DataFrame的列。通过df[索引]的方式,永远是获取列,不会获取行。【索引永远被解析为是列索引。】
display(df["a"], type(df["a"]))

# 获取列的第二种方式:(建议大家使用前者,因为不受特殊名称的限制。)
display(df.a)

# 获取多个列(返回一个DataFrame,即使只选择一个列)
display(df[["a", "d"]])

#不管列名和行的切片索引

display(df.iloc[:,2:5])    #获取2-5列(注意:从0列开始算)

display(df.iloc[:,:5])     #获取前5列

display(df.iloc[:,[False,True,True,False,True,True]])  #

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值