【课程2.5】 Pandas数据结构Dataframe:基本概念及创建

"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等。

Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构。

1.Dataframe 数据结构


# Dataframe是一个表格型的数据结构,“带有标签的二维数组”。
# Dataframe带有index(行标签)和columns(列标签)data = {'name':['Jack','Tom','Mary'],'age':[18,19,20],'gender':['m','m','w']}
frame = pd.DataFrame(data)
print(frame)
print(type(frame))
print(frame.index,'\n该数据类型为:',type(frame.index))
print(frame.columns,'\n该数据类型为:',type(frame.columns))
print(frame.values,'\n该数据类型为:',type(frame.values))
# 查看数据,数据类型为dataframe
# .index查看行标签
# .columns查看列标签
# .values查看值,数据类型为ndarray
-----------------------------------------------------------------------age gender  name
0   18      m  Jack
1   19      m   Tom
2   20      w  Mary<class 'pandas.core.frame.DataFrame'>RangeIndex(start=0, stop=3, step=1)
该数据类型为: <class 'pandas.indexes.range.RangeIndex'>Index(['age', 'gender', 'name'], dtype='object')
该数据类型为: <class 'pandas.indexes.base.Index'>[[18 'm' 'Jack'][19 'm' 'Tom'][20 'w' 'Mary']]
该数据类型为: <class 'numpy.ndarray'>

2.Dataframe 创建方法一:由数组/list组成的字典


# 创建方法:pandas.Dataframe()data1 = {'a':[1,2,3],'b':[3,4,5],'c':[5,6,7]}
data2 = {'one':np.random.rand(3),'two':np.random.rand(3)}   # 这里如果尝试  'two':np.random.rand(4) 会怎么样?
print(data1)
print(data2)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)
# 由数组/list组成的字典 创建Dataframe,columns为字典key,index为默认数字标签
# 字典的值的长度必须保持一致!df1 = pd.DataFrame(data1, columns = ['b','c','a','d'])
print(df1)
df1 = pd.DataFrame(data1, columns = ['b','c'])
print(df1)
# columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如'd'),则产生NaN值
# 如果columns重新指定时候,列的数量可以少于原数据df2 = pd.DataFrame(data2, index = ['f1','f2','f3'])  # 这里如果尝试  index = ['f1','f2','f3','f4'] 会怎么样?
print(df2)
# index参数:重新定义index,格式为list,长度必须保持一致
-----------------------------------------------------------------------
{'a': [1, 2, 3], 'c': [5, 6, 7], 'b': [3, 4, 5]}
{'one': array([ 0.00101091,  0.08807153,  0.58345056]), 'two': array([ 0.49774634,  0.16782565,  0.76443489])}a  b  c
0  1  3  5
1  2  4  6
2  3  5  7one       two
0  0.001011  0.497746
1  0.088072  0.167826
2  0.583451  0.764435b  c  a    d
0  3  5  1  NaN
1  4  6  2  NaN
2  5  7  3  NaNb  c
0  3  5
1  4  6
2  5  7one       two
f1  0.001011  0.497746
f2  0.088072  0.167826
f3  0.583451  0.764435

Dataframe 创建方法二:由Series组成的字典

data1 = {'one':pd.Series(np.random.rand(2)),'two':pd.Series(np.random.rand(3))}  # 没有设置index的Series
data2 = {'one':pd.Series(np.random.rand(2), index = ['a','b']),'two':pd.Series(np.random.rand(3),index = ['a','b','c'])}  # 设置了index的Series
print(data1)
print(data2)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
print(df1)
print(df2)
# 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签(如果Series没有指定标签,则是默认数字标签)
# Series可以长度不一样,生成的Dataframe会出现NaN值
-----------------------------------------------------------------------
{'one': 0    0.892580
1    0.834076
dtype: float64, 'two': 0    0.301309
1    0.977709
2    0.489000
dtype: float64}
{'one': a    0.470947
b    0.584577
dtype: float64, 'two': a    0.122659
b    0.136429
c    0.396825
dtype: float64}one       two
0  0.892580  0.301309
1  0.834076  0.977709
2       NaN  0.489000one       two
a  0.470947  0.122659
b  0.584577  0.136429
c       NaN  0.396825

3.Dataframe 创建方法三:通过二维数组直接创建

ar = np.random.rand(9).reshape(3,3)
print(ar)
df1 = pd.DataFrame(ar)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])  # 可以尝试一下index或columns长度不等于已有数组的情况
print(df1)
print(df2)
# 通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式
# index和colunms指定长度与原数组保持一致
-----------------------------------------------------------------------
[[ 0.54492282  0.28956161  0.46592269][ 0.30480674  0.12917132  0.38757672][ 0.2518185   0.13544544  0.13930429]]0         1         2
0  0.544923  0.289562  0.465923
1  0.304807  0.129171  0.387577
2  0.251819  0.135445  0.139304one       two     three
a  0.544923  0.289562  0.465923
b  0.304807  0.129171  0.387577
c  0.251819  0.135445  0.139304

4.Dataframe 创建方法四:由字典组成的列表

data = [{'one': 1, 'two': 2}, {'one': 5, 'two': 10, 'three': 20}]
print(data)
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(data, index = ['a','b'])
df3 = pd.DataFrame(data, columns = ['one','two'])
print(df1)
print(df2)
print(df3)
# 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签
# colunms和index参数分别重新指定相应列及行标签
-----------------------------------------------------------------------[{'one': 1, 'two': 2}, {'one': 5, 'three': 20, 'two': 10}]one  three  two
0    1    NaN    2
1    5   20.0   10one  three  two
a    1    NaN    2
b    5   20.0   10one  two
0    1    2
1    5   10

5.Dataframe 创建方法五:由字典组成的字典

data = {'Jack':{'math':90,'english':89,'art':78},'Marry':{'math':82,'english':95,'art':92},'Tom':{'math':78,'english':67}}
df1 = pd.DataFrame(data)
print(df1)
# 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的keydf2 = pd.DataFrame(data, columns = ['Jack','Tom','Bob'])
df3 = pd.DataFrame(data, index = ['a','b','c'])
print(df2)
print(df3)
# columns参数可以增加和减少现有列,如出现新的列,值为NaN
# index在这里和之前不同,并不能改变原有index,如果指向新的标签,值为NaN (非常重要!)
-----------------------------------------------------------------------Jack  Marry   Tom
art        78     92   NaN
english    89     95  67.0
math       90     82  78.0Jack   Tom  Bob
art        78   NaN  NaN
english    89  67.0  NaN
math       90  78.0  NaNJack  Marry  Tom
a   NaN    NaN  NaN
b   NaN    NaN  NaN
c   NaN    NaN  NaN

Python数据分析实战【第三章】2.5-Pandas数据结构Dataframe:基本概念及创建【python】相关推荐

  1. 零基础学Python课后实战第三章

    零基础学Python课后实战第三章 实战一:模拟支付宝蚂蚁森林的能量产生过程 实战二:猜数字游戏 实战三:模拟跳一跳小游戏的加分块 实战四:模拟10086查询功能 实战一:模拟支付宝蚂蚁森林的能量产生 ...

  2. 网易云课堂Python数据分析实战前两章(跟小蚊子老师学数据分析)

    第一章节 Python与数据分析概况 1 数据分析概况 1.1 什么是数据分析 数据分析简单来说就是对数据进行分析,专业的说法是数据分析是指使用适当的分析方法,对收集的数据进行分析,总结规律,提炼出有 ...

  3. python第四章课后答案4.7_Python数据分析实战作业 第四章 Python数据分析实战 习题...

    第四章 Python数据分析实战 习题(数据见附件sizhang.xlsx) 班主任现有一班级的两张表,如下. 表一:成绩表 学 号C#线 代Python 16010203788896 表二:信息表 ...

  4. Python数据分析实战基础 | 初识Pandas

    这是Python数据分析实战基础的第一篇内容,主要是和Pandas来个简单的邂逅.已经熟练掌握Pandas的同学,可以加快手速滑动浏览或者直接略过本文. 01  重要的前言 这段时间和一些做数据分析的 ...

  5. 《Python数据分析实战》day2: Pandas中取得某行或者是某列的一点思考

    今天看了<Python数据分析实战>这本书的第四章:Pandas的简介的部分,大概看了一半,在实践代码的时候发现了jupyter notebook提示warning,研究了一下有了一些自己 ...

  6. python数据分析实战 fabio nelli百度云_Python数据分析实战 内利(Fabio Nelli),杜春晓 9787115432209...

    商品描述: 基本信息 书名:Python数据分析实战 定**价:59.00元 作者: 内利(Fabio Nelli) 著,杜春晓 译 出版社:人民邮电出版社 出版日期:2016-08-01 ISBN: ...

  7. python电影数据分析报告_【python数据分析实战】电影票房数据分析(二)数据可视化...

    在上一部分<[python数据分析实战]电影票房数据分析(一)数据采集> 已经获取到了2011年至今的票房数据,并保存在了mysql中. 本文将在实操中讲解如何将mysql中的数据抽取出来 ...

  8. 数据载入、存储及文件格式——《利用python数据分析》第六章学习

    数据载入.存储及文件格式--<利用python数据分析>第六章学习 前言 这次带来第六章的学习笔记,希望这次效率高点,快点写完. 代码环境这次小升级,Pycharm 2021.3 + An ...

  9. Python数据分析实战学习

    Python数据分析实战学习\displaystyle\boxed{Python数据分析实战学习}Python数据分析实战学习​ AprilJulyOctober2015AprilJulyOctobe ...

最新文章

  1. c 普通的文本变成注释文本的快捷键_2019年IntelliJ IDEA快捷键终极大全,绝版!速度收藏!...
  2. OpenCV分配与释放图像空间
  3. Lesson 4.张量的线性代数运算
  4. 阿里巴巴创新研究计划AIR2018正式发布 邀全球学者共创未来
  5. 加入域时遇到“找不到网络路径”错误解决办法汇总
  6. Android传感器开发详解
  7. Spring Cloud 微服务架构全链路实践
  8. 扫地机器人返充原理_扫地机器人全解析
  9. 昆明理工大学复试计算机试题,2012年昆明理工大学计算机考研复试试题(.PDF
  10. android卸载弹出窗口,卸载Android app弹出浏览器的一种实现
  11. 学生电脑哪个牌子好_香米哪个牌子好
  12. 动软代码生成器生成批量代码相关步骤
  13. 计算机四级题库百度云资源,计算机四级题库
  14. DirectX12(D3D12)基础教程(十九)—— 多实例渲染
  15. nbiot教学实箱_lora-NBiot窄带物联网通信试验箱--5g通信技术教学篇
  16. 职业规划:45岁之后,外企精英们去哪里?
  17. php开源记账,php记账
  18. Configure Database Mirroring
  19. TPS和事务响应时间的关系、计算公式
  20. CSS3实现3D立体效果

热门文章

  1. 架构师修炼系列【FMEA故障分析与影响分析】
  2. 使用github-profile-readme-generator美化你的README
  3. leetcode-第六题 Z 字形变换
  4. 【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库
  5. Elixir - comprehensions
  6. 云南计算机网络技术专业培训学院,云南哪些大学有计算机网络技术专业
  7. 【剑指 Offer_15】二进制中1的个数_PythonJava_逐位相与解法
  8. 读书笔记:NOSQL 菜鸟教程
  9. toolbar wpf 按钮带文字_Tob设计:中台设计组件按钮
  10. Java 代码精简之道 侵删