Pandas数据结构

目录

  • Pandas的数据结构
  • Series
  • DataFrame

正文

Pandas的数据结构

  • Pandas中引入了两种新的数据结构----Series、DataFrame和Panel。
    • Series:一维数组,Series类型由一组数据及与之相关的数据索引组成
    • DataFrame:二维的表格型数据结构。可以将DataFrame理解为Series的容器。
    • Panel:可以视为Excel的多表单Sheet

Series

  • 用于存储一行或一列的数据,以及与之相关的索引的集合。Series([数据1,数据2,…],[index=[索引1,索引2,…]])
import pandas as pd
s=pd.Series([24,20,25,26,24])
print(s)
  • 【运行结果】
    在这里插入图片描述
  • 输出结果数据有两列,右侧包含的实际数据,左侧是对应的索引。最后一行的dtype表明值的数据类型是64位整型。在没有明确定义index的情况下,自动生成一个从0开始的整数序列作为索引,称为位置索引
  • 如果指定索引为数字整数,则位置访问失效
>>>from pandas import Series
>>>X=Series(['a',2,'螃蟹'],index=[1,2,3])
>>>X[3]    #通过索引访问
"螃蟹"
  • 如果指定索引为非数字整数,则可以通过位置或者索引访问数据。
>>>X=Series(['a',2,'螃蟹'],index=['a','b','c']
>>>X['c']    #通过索引访问
'螃蟹'
>>>X[2]    #通过位置访问(位置从0开始)
'螃蟹'
  • Series类型的操作类似Python字典类型
    • 自定义索引访问
    • 使用.get()方法
>>>X=Series(['a',2,'螃蟹'],index=[1,2,3])
>>>X
1	a
2	2
3	螃蟹
dtype:object
>>>X[3]
'螃蟹'
>>>X[3]=8    #修改某索引对应的值
>>>X
1	a
2	2
3	8
dtype:object

DataFrame

  • 是用于存储多行和多列的数据集合,是Series的容器。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共用同一个索引)
    在这里插入图片描述
  • DataFrame格式:
pd.DataFrame(data=None,index=None,columns=None,dtype=None,copy=False)
  • DataFrame创建:
  • 方法一:用嵌套列表来创建
import pandas as pd
stu=['小明','小红','小白','小小']
titles=['python','高数','英语']
df=pd.DataFrame([[100,90,98],[78,76,74],[55,56,58],[87,89,86]],index=stu,columns=titles)
print(df)
  • 【输出结果】
    在这里插入图片描述
  • DataFrame构造函数的columns函数给出列的名字,index给出label标签
  • 方法二:从列表的字典来创建,字典的键默认为列名。
import pandas as pd
data={
	'name':['张三','李四','王五','小明'],
	'sex':['female','female','male','male'],
	'year':[2001,2001,2003,2002]
	'city':['北京','上海','广州','北京']
}
df=pd.DataFrame(data)
print(df)
  • 【输出结果】
    在这里插入图片描述
  • 方法三:从系列series的字典来创建,字典的键默认为列名,行索引默认从0开始。
>>>from pandas import DataFrame
>>>from pandas import Series
>>>df=DataFrame({'age':Series([26,29,24]),'name':Series(['Ken','Jerry','Ben'])})
>>>df
	age	name
0	26	Ken
1	29	Jerry
2	24	Ben
  • 查看DataFrame数据的行索引、列名和数据
>>>df.index    #行轴标签或行索引
RangeIndex(start=0,stop=3,step=1)
>>>df.columns    #返回所有列名的列表
Index(['age','name'],dtype='object')
>>>df.values    #实际数据,作为Numpy数组返回
array([[26,'Ken'],[29,'Jerry'],[24,'Ben']],dtype=object)
  • 查看DataFrame数据的行数和列数、数据类型
>>>df.shape    #元组,表示行数和列数
(3,2)
>>>df.dtypes    #查询各列数据类型
age    int64
name    object
dtype:object
>>>df['age'].dtypes    #查询某列数据类型
dtype('int64')
>>>df['age']=df['age'].astype(str)    #类型转换
  • DataFrame数据导入
    数据存在的形式多样,有文件(csv、excel、txt)和数据库(mysql、access、sql server)等形式。
    导入csv文件:
read_csv(file,names=[列名1,列名2,..],sep=" ",...)
#file:文件路径文件名
#names:列名,默认为文件中的第一行作为列名
#sep:分隔符,默认是逗号
#encoding='GBK'
#index_col=0
>>>import pandas as pd
>>>rcsv=pd.read_csv(r"d:\gdp.csv")
>>>print(rcsv.head())
	country	gdp
0	美国	5433.00
1	英国	723.28
2	法国	626.51
3	中国	597.16
4	日本	443.07
  • 导入excel文件:pip install xlrd xlwt
    pip install openpyxl
read_excel(file,sheetname,header=0)
#file:文件路径文件名
#sheetname:sheet的名字,如:sheet1
#header:列名,默认0为文件的第一行作为列名,布尔型0和1
>>>import pandas as pd
>>>ranktable=pd.read_excel(r"D:\sjcltest.xlsx",'成绩单')
>>>print(ranktable.shape)
(496,24)
>>>print(ranktable.columns)
index(['学号','姓名','平时成绩','期末成绩','总成绩','100~90','89~80','79~70','69~60','60分以下','100~90.2','89~80.1','79~70.1','69~60.1','60分以下.1','100~90.2','89~80.2','79~70.2','69~60.2','60分以下.2','平时成绩.1','卷面成绩','总成绩.1','abs(平时-期末)<10'],dtype='object')
>>>print(ranktable.index)
Rangeindex(start=0,stop=496,step=1)
#用openpyxl代替xlrd打开.xlsx文件,
#df=pd.read_excel(r"e:\2019大学计算机\sciltest.xlsx",'成绩单',engine=openpyxl')
  • DataFrame数据导出
  • 导出csv文件:
to_csv(file_path,sep=",",index=TRUE,header=TURE)
#file_path:文件路径
#sep:分隔符,默认是逗号
#index:是否导出行序号,默认是TURE,导出行序号
#header:是否导出列名,默认TURE导出列名
	age	name
0	26	Ben
1	85	John
2	64	Jerry
df.to_csv('e:\\01.csv')    #默认带上index
df.to_csv('e:\\02.csv',index=False)    #无index

在这里插入图片描述

  • 导出excel文件:
to_excel(file_path,index=TRUE,header=TURE)
#file_path:文件路径
#index:是否导出行序号,默认是TRUE,导出行序号
#header:是否导出列名,默认TRUE导出列名
df.to_excel('e:\\01.xlsx')    #默认带上index
df.to_excel('e:\\02.xlsx',index=False)    #无index

在这里插入图片描述
知识点整理不易,如果对你有帮助,给个免费的赞支持一下吧!感谢阅读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
pandas是一个开源的Python数据分析库,提供了多种数据结构,其中包括DataFrame和Panel。DataFrame是pandas中最常用的数据结构之一,它是一个二维的数据结构,数据以行和列的表格方式排列,可以执行各种行列操作和算术运算。通过pandas的DataFrame构造函数,我们可以创建一个DataFrame对象,传入数据、索引、列名等参数来构建DataFrame对象。 另外,pandas还提供了Panel这个数据结构,它是一个三维的数据结构,可以看作是DataFrame的容器,可以存储多个DataFrame。通过pandas的Panel构造函数,我们可以创建一个空的Panel对象,也可以传入数据、items、major_axis、minor_axis等参数来构建一个具有数据的Panel对象。 对于DataFrame,我们可以指定索引和列名来创建一个具有特定结构的DataFrame。在创建DataFrame时,如果给定的索引和列名的长度与数据的维度不匹配,将会报错。例如,在给定的数据列表中,如果每个内层列表的长度与列名的长度不一致,将会报错。 综上所述,pandas提供了多种数据结构,包括DataFrame和Panel,它们可以用于对数据进行分析和操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Pandas数据结构分析](https://blog.csdn.net/m0_58387972/article/details/123302776)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python3快速入门(十三)——Pandas数据结构](https://blog.csdn.net/cdqvkn73338/article/details/100959261)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值