Pandas - DataFrame类型的对象 - 1. 创建方式

时间:2024-05-19 19:51:21

DataFrame类型

DataFrame是一个多维数据类型。因为通常使用二维数据,因此,我们可以将DataFrame理解成类似excel的表格型数据,由多列组成,每个列的类型可以不同。
因为DataFrame是多维数据类型,因此,DataFrame既有行索引,也有列索引。

一. 创建方式

我们可以使用如下的方式创建(初始化)DataFrame类型的对象(常用):

  • 二维数组结构(列表,ndarray数组,DataFrame等)类型。
  • 字典类型,key为列名,value为一维数组结构(列表,ndarray数组,Series等)。

说明:

  • 如果没有显式指定行与列索引,则会自动生成以0开始的整数值索引。我们可以在创建DataFrame对象时,通过index与columns参数指定。
  • 可以通过head,tail访问前 / 后N行记录(数据)。
import numpy as np
import pandas as pd

# 创建DataFrame类型的对象。DataFrame类型可以想象为是二维的表格类型(类比于Excel,数据库中的table)。
# 通过二维数据结构(二维类数组对象),例如,二维列表,二维ndarray。
df = pd.DataFrame([[1, 2, 3], [2, 3, 4]])
df2 = pd.DataFrame([[10, 20, 30], [20, 30, 40]])
# type(df)
# print(df)
# print(df)
# print(df2)
# display函数类似于print函数,但是对于部分对象,输出会有美化的效果。
# display函数时IPython扩展的函数,在Python解释中不能使用。

# 为什么要使用display?
# 如果多个对象(表达式)直接求值,只会显示最后一个对象(表达式)的求值结果。我们可以使用print来查看
# 多个对象(表达式)的计算结果,但是,print输出的效果可能不够友好。如果既希望同时显示多个求值结果,又
# 希望以友好的方式显示,可以使用display函数代替print函数。(display函数展示的效果与直接求值的效果是相同的。)
# df
# display(df)
# display(df2)

# 通过字典来创建DataFrame类型的对象。字典的每组键值对表示DataFrame的一列。
# 每组键值对的key用来表示列索引(列标签),value用来表示该列的值(value为一维类数组对象)。
# df = pd.DataFrame({0:[1, 2], 1:[2, 3], 2:[3, 4]})
# 如果没有显式去指定DataFrame的行(列)索引,则默认创建从0开始,增量为1的索引(与Series的默认索引生成方式相同)。
# 我们也可以在创建DataFrame的时候,通过index参数来显式指定行索引,通过columns参数来显式指定列索引。
# df = pd.DataFrame(np.random.random(size=(3, 3)), index=["a", "b", "c"], columns=["k", "l", "m"])
# df

# head tail方法
# 最多显示参数指定的前(后)N条记录。N默认为5。
df = pd.DataFrame(np.random.random(size=(30, 3)))
# df.head()
# df.tail(3)
# 随机抽样。从数据集中随机选择出参数指定的记录数。如果没有显式指定抽取的记录数,则默认为1。
# df.sample(5)
# df.sample()
# sample默认为不放回抽样,这意味着,抽样的数量不能大于数据集的数量。如果需要放回抽样,
# 可以将参数replace的值设置为True。(默认为False)
# df.sample(31, replace=True)
# 如果需要产生相同的随机序列,我们可以显式设置参数random_state(相当于随机种子)。
# df.sample(5, random_state=30)

类似excel,行和列有索引
多行多列
Pandas - DataFrame类型的对象 - 1. 创建方式

Read_csv多
咱们以后肯定是读取,而不是自己创建
列表,ndarray数组,DataFrame
Pandas - DataFrame类型的对象 - 1. 创建方式

Pandas - DataFrame类型的对象 - 1. 创建方式

先传二维列表

上面都是什么? 索引
Series是一维的
DataFrame是二维的,含有两个索引,行标签索引,列标签索引

没有指定,就从0开始,依次递增

Print和直接a一样吗?
Print和直接a不一样,一个结果粗糙一个美观些
所以以后,都用求值的方式(out)展示,不用print的方式
Pandas - DataFrame类型的对象 - 1. 创建方式

Why只显示df2?
如果依次发送两条,按顺序执行
Df有结果
被df2的结果覆盖,只显示最后的记过

本质原因是ipython里面只能一条一条写
Jn可以写很多

想解决,都使用print
Pandas - DataFrame类型的对象 - 1. 创建方式

Display方法

Display方法解决两者困境
类似print函数,但是对于部分对象,输出会有美化的效果
只能在ipython中用,不能再python解释器中使用
Pandas - DataFrame类型的对象 - 1. 创建方式
Display如下
Display函数展示的效果与直接求值的效果是一样的
Df
Pandas - DataFrame类型的对象 - 1. 创建方式
Pandas - DataFrame类型的对象 - 1. 创建方式
上面说明了Datafram可以传二维数组,
2. 可以传ndarray数组
Pandas - DataFrame类型的对象 - 1. 创建方式
通过字典来创建DataFrame类型的对象
那么我们再来看通过字典来创建DataFrame类型的对象

字典的每组键值对,用来表示DataFrame的一列

这个图的线上面 列标签 下 列值
Pandas - DataFrame类型的对象 - 1. 创建方式
Pandas - DataFrame类型的对象 - 1. 创建方式

加了行标签,列标签
Pandas - DataFrame类型的对象 - 1. 创建方式
Series一维的,一个索引
DataFrame二维的,两个索引:行索引,列索引

如果没有显示去指定DataFrame的行 列索引,则默认创建从0开始,增量为1的索引(与series的默认索引生成方式相同)

我们也可以再创建DataFrame的时候

指定行索引,列索引
Pandas - DataFrame类型的对象 - 1. 创建方式
最多显示参数指定的前 后 N条记录,M默认为5
报错问题:行数少了
Pandas - DataFrame类型的对象 - 1. 创建方式

相关文章