pandas——Dataframe的多种创建方式

本文介绍了pandas Dataframe的数据结构及其二维特性,详细讲解了如何从字典、numpy数组以及通过读取csv文件来创建DataFrame。特别讨论了从字典创建时可能遇到的问题及解决方案,如需指定索引和列名。

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

理解Dataframe

Dataframe是pandas中的一种数据结构,表示二维矩阵的数据表,区别于列表和字典这种一维的结构。二维具体表示为行和列,类似于sql中表的格式(或者简单理解为类似于excel中的一张表),每一列可储存不同的数据类型,比如字符型、数值型、布尔型或者object类型。

创建Dataframe

  1. 从字典中创建

import pandas as pd
d = {'广东':['广州','深圳'], '福建':['福州', '厦门']}
df = pd.DataFrame(d)

​注:

使用第一种方法一般需要字典的值为列表,如果是

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame(d)

会报错:ValueError: If using all scalar values, you must pass an index,意思是需要确定并传入索引index。

  • 解决办法一可以根据想要表达的意思传入索引:

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame(d, index=[0])

​传入几个索引,DataFrame就会有几行,不过在这里每一行都是相同的:

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame(d, index=[0,1,2])

  • 解决办法二也可以使用list(d.items()):

list(d.items())的得到的结果是这样的,将字典转化为一对对键值对:

[('广东', 23), ('福建', 8), ('江苏', 13)]

传入Dataframe:

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame(list(d.items()))

这样更接近我想要的结果

这时可以给Dataframe的列命名,相当于原来字典的key为一列,value为一列

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame(list(d.items()), columns=['省', '地级市'])

  • 解决办法三使用DataFrame.from_dict()

d = {'广东':23, '福建':8, '江苏':13} 
df = pd.DataFrame.from_dict(d, orient='index')

2. 从numpy ndarray创建

df = pd.DataFrame(np.array([['广州', '厦门', '乌鲁木齐'], 
                            ['深圳', '福州', '喀什'], 
                            ['汕头', '泉州', '石河子']]), 
                    columns=['广东', '福建', '新疆'])

​np.array与dict构造DataFrame不一样,array里面每一个list长度必须一样,代表DataFrame每一行,类似于sql insert插入表,值顺序对应好列名。

3. 使用pd.read_csv等读取csv文件创建,或者pd.read_excel等


参考链接:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html?highlight=dataframe#pandas.DataFrame

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值