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

PandasDataFrame是一种二维数据结构,可以看作是一张表格,其中的数据以行和列的形式进行组织。DataFrame可以由多种类型的数据创建,包括列表、字典、数组等。与Numpy的ndarray相比,DataFrame提供了更多的数据操作和分析功能。 例如,可以使用列表或字典创建DataFrame,如下所示: df1 = pd.DataFrame(data=[[1, 2, 3], [11, 12, 13]], index=['r_1', 'r_2'], columns=['A', 'B', 'C']) df2 = pd.DataFrame(data=[[1], [11]], index=['r_1', 'r_2'], columns=['A']) df3 = pd.DataFrame(data=np.arange(12).reshape(3, 4), index=list("abc"), columns=list("ABCD"))<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PandasDataFrame详解](https://blog.youkuaiyun.com/ytp552200ytp/article/details/115550564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Pandas基础——DataFrame](https://blog.youkuaiyun.com/qq_48003414/article/details/116976339)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值