pandas DataFrame怎么用?从创建到索引的完整教程

 更新时间:2026年09月22日 09:06:11   作者:梨的橙  
还在为pandas DataFrame的使用发愁吗?本文详细介绍了DataFrame的创建方法、属性、索引方式以及常用函数,包括dropna、fillna、sort_values等,助你轻松掌握数据分析核心技能

 DataFrame是pandas中常用的数据结构,并且在数据分析中使用非常方便、简洁,总结如下。

1、介绍DataFrame

DataFrame是pandas中的表格型数据结构,可以理解为xlsx中的表格;

它含N个有序的列,每一列可以是不同的值类型(数值、字符串、布尔型值),也可以理解为由Series组成的字典(Series是padas中一种基础数据结构,理解为表格中的一列);

此外DataFrame是一个二维的数据结构,也可以看成是二维的数据,结构如图所示(图片来源菜鸟教程):

其中

  • Index:表示索引值,就是行标签,默认值为0,1,2....;
  • Column-i:表示列标签,默认值为0,1,2...

2、如何创建DataFrame

首先需要了解pd.DataFrame( data, index, columns, dtype, copy)构造方法

  • data:一组数据(list, dict, ndarray, series等类型)。
  • index:用于指定行标签。
  • columns:用于指定列标签 。
  • dtype:数据类型。
  • copy:拷贝数据,默认为 False。

1)通过列表创建

指定行标签

import pandas as pd

def main():
    data = [[1, 2, 3], ['Google', 'Meta', 'Apple']]
    index = ['idx', 'name']
    df = pd.DataFrame(data, index=index)

    print(df)

指定列标签

import pandas as pd


def main():
    data = [['Google', 1], ['Meta', 2], ['Apple', 3]]
    col = ['name', 'id']
    df = pd.DataFrame(data, columns=col)

    print(df)

2)通过字典创建

字典的key对应表格的列名,value对应每个列中存在的值。

import pandas as pd


def main():
    data = {'name': ['Google', 'Meta'], 'idx': [1, 2]}
    df = pd.DataFrame(data)
    print(df)

3)使用numpy中数组来创建

numpy中数组就是类似的二维数组,可以使用行标签指定,也可以使用列标签指定

import pandas as pd
import numpy as np


def main():    
    ndarray_data = np.array([
        ['Google', 1],
        ['Meta', 2],
        ['Apple', 3]
    ])
    idx = [0, 1, 2]
    df = pd.DataFrame(ndarray_data, index=idx)
    print(df)

3、DataFrame的属性

1) df.shape

用于返回 DataFrame对象 的维度信息(形状),即行数和列数。返回包含行数和列数的元组。

import pandas as pd

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, 8, 9]}
df = pd.DataFrame(data)

# 使用 df.shape 获取 DataFrame 的维度信息
shape = df.shape

# 打印结果
print("DataFrame 的维度信息:", shape) # (3,3)

2)df.columns 用于获取列名 3)df.index 用于获取索引

4、DataFrame索引元素方式

Pandas 使用 loc 属性返回指定行和列的数据,从0开始计数

1)指定行号和列号访问元素

import pandas as pd

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3],
        'B': [4, 5, 6],
        'C': [7, 8, 9]}
df = pd.DataFrame(data)

# 选择第二行第三列的元素
element = df.iloc[1, 2]

# 打印结果
print(element)

2)使用切片,选择连续的多行或多列数据

import pandas as pd


def main():
    data = {'A': [1, 2, 3],
            'B': [4, 5, 6],
            'C': [7, 8, 9]}
    df = pd.DataFrame(data)

    target = df.iloc[:2, :2]
    print(target)

3)使用列表,选择多行或多列数据

import pandas as pd


def main():
    data = {'A': [1, 2, 3],
            'B': [4, 5, 6],
            'C': [7, 8, 9]}
    df = pd.DataFrame(data)

    target = df.iloc[[0, 2], [1, 2]]
    print(target)

main()

4)使用列索引名称来,获取数据

import pandas as pd


def main():
    data = {'A': [1, 2, 3],
            'B': [4, 5, 6],
            'C': [7, 8, 9]}
    df = pd.DataFrame(data)

    target = df.iloc[0]['A']
    print(target)

5、常用的一些函数

1)df.dropna() 用于删除表格中包含缺失值的行 df.dropna(axis=1) 用于删除表格中指定列中包含缺失值的行

2)df.fillna(value=0, inplace=True) 对于DataFrame中缺失的值,还可以根据值进行填充

3)df.sort_values(by='column_name', ascending=True) 根据指定的列名排序表格,默认为升序排序

import pandas as pd


def main():
    data = {'A': [1, 2, 3],
            'B': [7, 3, 1],
            'C': [7, 8, 9]}
    df = pd.DataFrame(data)

    target = df.sort_values(by='B')
    print(target)

main()

4)df.sample() 用于从DataFrame中随机抽取样本。

默认情况,可以返回指定数量的随机样本的DataFrame。

import pandas as pd

# 创建一个示例 DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': ['a', 'b', 'c', 'd', 'e']}
df = pd.DataFrame(data)

# 从 DataFrame 中随机抽取两个样本
sample = df.sample(n=2)

# 打印结果
print(sample)

df.sample() 方法还支持其他参数,例如 frac(指定要抽取的样本占原始数据的比例)、replace(是否允许重复抽样)。

5)pd.concat()

Pandas中用于合并数据的函数,可以沿着指定的轴将多个DataFrame或者Series对象连接起来。

沿着行进行数据合并,因此合并的两个对象在Series上一致。

import pandas as pd

# 创建两个示例 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3],
                    'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9],
                    'B': [10, 11, 12]})

# 使用 pd.concat() 连接两个 DataFrame,并为每个 DataFrame 添加一个层次化索引
result = pd.concat([df1, df2], keys=['df1', 'df2'])

# 打印结果
print(result)

沿着列进行合并,因此合并的两个对象在行数上一致。

import pandas as pd

# 创建两个示例 DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3],
                    'B': [4, 5, 6]})
df2 = pd.DataFrame({'C': [7, 8, 9],
                    'D': [10, 11, 12]})

# 使用 pd.concat() 沿列轴连接两个 DataFrame
result = pd.concat([df1, df2], axis=1)

# 打印结果
print(result)

6)df.Series_name.value_counts()

计算DataFrame中某个Series中每个唯一值的出现次数

import pandas as pd
import numpy as np


def main():
    data = {'A': [1, 2, 3],
            'B': [7, 3, 1],
            'C': [7, 8, 9]}
    df = pd.DataFrame(data)

    target = df.B.value_counts()
    print(target)

实际应用中,DataFrame中还有很多方法没有介绍,根据需要边用边查。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python wordcloud库安装方法总结

    Python wordcloud库安装方法总结

    在本篇文章里小编给大家整理的是一篇关于Python wordcloud库安装方法总结内容,有需要的朋友们可以学习下。
    2020-12-12
  • python tkinter图形界面代码统计工具(更新)

    python tkinter图形界面代码统计工具(更新)

    这篇文章主要为大家详细介绍了python tkinter图形界面代码统计工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Python3操作SQLite3数据库的完整指南(最新推荐)

    Python3操作SQLite3数据库的完整指南(最新推荐)

    在Python中操作SQLite3数据库,通常使用sqlite3模块,这个模块提供了操作SQLite数据库的接口,包括创建连接、执行SQL语句、提交事务等,下面是一些基本的使用方法,感兴趣的朋友一起看看吧
    2026-08-08
  • Python SQLAlchemy库的使用方法

    Python SQLAlchemy库的使用方法

    这篇文章主要介绍了Python SQLAlchemy库的使用方法,帮助大家更好的利用python处理数据库,感兴趣的朋友可以了解下
    2020-10-10
  • Python中的Numpy入门教程

    Python中的Numpy入门教程

    这篇文章主要介绍了Python中的Numpy入门教程,着重讲解了矩阵中的数组操作,需要的朋友可以参考下
    2014-04-04
  • Python中copy() 函数浅拷贝与深拷贝示例详解

    Python中copy() 函数浅拷贝与深拷贝示例详解

    Python的copy()函数是copy模块提供的一个用于创建对象浅拷贝的工具,这篇文章主要介绍了Python中copy()函数浅拷贝与深拷贝的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • Python创建空列表的字典2种方法详解

    Python创建空列表的字典2种方法详解

    这篇文章主要介绍了Python创建空列表的字典2种方法详解,需要的朋友可以参考下
    2020-02-02
  • 一文带你了解Python中的延迟绑定

    一文带你了解Python中的延迟绑定

    Python中的延迟绑定是指在嵌套函数中,内部函数在被调用时才会绑定外部函数的变量,而不是在定义内部函数时就绑定。本文将通过一些例子带大家深入了解Python中的延迟绑定,感兴趣的可以了解一下
    2023-05-05
  • Python实现统计给定列表中指定数字出现次数的方法

    Python实现统计给定列表中指定数字出现次数的方法

    这篇文章主要介绍了Python实现统计给定列表中指定数字出现次数的方法,涉及Python针对列表的简单遍历、计算相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • python利用后缀表达式实现计算器功能

    python利用后缀表达式实现计算器功能

    这篇文章主要为大家详细介绍了python利用后缀表达式实现计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02

最新评论