pandas创建DataFrame的几种方式

本文详细介绍了如何使用pandas创建DataFrame,包括通过字典、Series以及预先定义索引和列名的方法。同时,文章提供了各个创建方式的示例和应用场景,帮助读者理解和运用这些方法。

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

pandas简介

Pandas是一个强大的分析结构化数据的工具集;它的使用基础是Numpy(提供高性能的矩阵运算);用于数据挖掘和数据分析,同时也提供数据清洗功能。本文重点对pandas的DataFrame创建的不同方式进行展示,并分析其使用场景。

pandas数据结构

1.DataFrame
DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
2.Series
Series是一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。

DdtaFrame的创建

pandas在创建DataFrame的时候,除了通过内置方法pandas.read_csv()或者pandas.read_excel()直接读取.csv文件或者.excel文件进行创建外,还可以通过以下方式进行创建。
1.通过字典的方式创建

示例1:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]})
df输出为:
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9

解释:通过该方法创建的DataFrame中,字典中的key为DataFrame中的columns,由于未指定行索引,其行索引默认为:RangeIndex(start=0, stop=3, step=1),即输出结果中的第一列。

示例2:
import pandas as pd
df =pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]}, index=['h1', 'h2', 'h3'])
df输出为:
    a  b  c
h1  1  4  7
h2  2  5  8
h3  3  6  9

解释:通过该方法创建的DataFrame中,字典中的key为DataFrame中的columns,索引为指定的index。

2.通过Series的方式创建

示例1:
s1 = pd.Series([1, 2, 3, 4])
print(s1)
0    1
1    2
2    3
3    4
df = s1.to_frame()
df输出为:
   0
0  1
1  2
2  3
3  4

解释:Series.to_frame(name=None),name产生维护相当于创建的DataFrame中的列明,由于Series本身只有一条数据,所以创建后的DataFrame只包含一列,由于本例为指定name,所以其df的列名默认为0。

示例1:
s1 = pd.Series([1, 2, 3, 4])
print(s1)
0    1
1    2
2    3
3    4
df = s1.to_frame(‘a’)
df输出为:
   a
0  1
1  2
2  3
3  4

解释:Series.to_frame(name=a),name产生维护相当于创建的DataFrame中的列明,由于Series本身只有一条数据,所以创建后的DataFrame只包含一列,所以其df的列名默认为a。

2.通过索引赋值的方式创建
pandas中DataFrame包含行索引index及列索引columns,通过索引的方式创建DataFrame的思路为,先创建索引,然后通过索引进行赋值。

示例:
df = pd.DataFrame(index=['h1', 'h2', 'h3'], columns=['a', 'b', 'c'])
df['a']['h1'] = 1
df输出为:
      a    b    c
h1    1  NaN  NaN
h2  NaN  NaN  NaN
h3  NaN  NaN  NaN

解释:通过pd.DataFrame指定index和columns的方式创建DataFrame为一个空DataFrame,通过两级索引的方式进行赋值。

总结

pandas通过以上三种方式创建DataFrame的使用场景:
在生产环境中,如果遇到列表类型数据转DataFrame,通过字典方式指定列名可以方便创建DataFrame;
如果单条数据为Series类型,可以通过to_frame指定列名方式(name=‘列名’)进行创建;
如果需要事先定义列名及索引,可以通过pd.DataFrame(index=[], columns=[])的方式创建一个空DataFrame,然后根据两级索引对DataFrame中数据进行赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值