pandas.DataFrame 概念及创建

基本概念

DataFrame 是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值字符串布尔值等。Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构

# Dataframe 数据结构
# Dataframe是一个表格型的数据结构,"带有标签的二维数组"
# Dataframe带有index(行标签)和columns(列标签)
import numpy
import pandas
data = {"name":["高桥李依","小原好美"],"age":[20,21],"gender":["女","女"]}
frame = pandas.DataFrame(data)
print(frame) # 查看数据,数据类型为dataframe
print(frame.index) # .index查看行标签
print(frame.columns) # .columns查看列标签
print(frame.values) # .values查看数值,数据类型为ndarray

创建方法

由数组 / 列表组成的字典

import numpy
import pandas

# 字典的值的长度必须保持一致!
data1 = {"a":[1,2,3],"b":[3,4,5]}
data2 = {"one":numpy.random.rand(3),"two":numpy.random.rand(3)}
print(data1)
print(data2)

# 创建方法:pandas.Dataframe()
d1 = pandas.DataFrame(data1)
d2 = pandas.DataFrame(data2)
# 由数组/列表组成的字典创建Dataframe,columns为字典key,index为默认数字标签
print(d1)
print(d2)

# columns参数:可以重新指定列的顺序,格式为list,如果现有数据中没有该列(比如'd'),则产生NaN值
df1 = pandas.DataFrame(data1,columns = ["b","a","d"])
print(df1)

# columns参数:重新指定的时候,列的数量可以少于原数据
df2 = pandas.DataFrame(data2,columns = ["two"])
print(df2)

# index参数:重新定义index,格式为list,长度必须保持一致
df2 = pandas.DataFrame(data2,index = ["f1","f2","f3"])
print(df2)

由Series组成的字典

import numpy
import pandas
# 由Seris组成的字典 创建Dataframe,columns为字典key,index为Series的标签
# 如果Series没有指定标签,则是默认数字标签

# 没有设置index的Series
data1 = {'one':pandas.Series(numpy.random.rand(2)),
	'two':pandas.Series(numpy.random.rand(3))}

# 设置了index的Series
data2 = {'one':pandas.Series(numpy.random.rand(2), 
	index = ['a','b']),'two':pandas.Series(numpy.random.rand(3),index = ['a','b','c'])}  
print(data1)
print(data2)

# Series可以长度不一样,生成的Dataframe会出现NaN值
df1 = pandas.DataFrame(data1)
df2 = pandas.DataFrame(data2)
print(df1)
print(df2)

通过二维数组直接创建

import numpy
import pandas

# 通过二维数组直接创建Dataframe,得到一样形状的结果数据
# 如果不指定index和columns,两者均返回默认数字格式
ar = numpy.random.rand(9).reshape(3,3)
print(ar)
df1 = pandas.DataFrame(ar)
df2 = pandas.DataFrame(ar,index = ['a', 'b', 'c'], columns = ['one','two','three'])
print(df1)
print(df2)
# index和colunms指定长度与原数组保持一致

由字典组成的列表

import numpy
import pandas
data = [{"one":1,"two":2},{"one":5,"two":10,"three":20}]
print(data)
# 由字典组成的列表创建Dataframe,columns为字典的key,index不做指定则为默认数组标签

# colunms和index参数分别重新指定相应列及行标签
df1 = pandas.DataFrame(data)
df2 = pandas.DataFrame(data,index = ["a","b"])
df3 = pandas.DataFrame(data,columns = ["one","two"])
print(df1)
print(df2)
print(df3)

由字典组成的字典

import numpy
import pandas
data = {'Jack':{'math':90,'english':89,'art':78},
	'Marry':{'math':82,'english':95,'art':92},
	'Tom':{'math':78,'english':67}}
# 由字典组成的字典创建Dataframe,columns为字典的key,index为子字典的key
df1 = pandas.DataFrame(data)
print(df1)

# columns参数可以增加和减少现有列,如出现新的列,值为NaN
df2 = pandas.DataFrame(data, columns = ['Jack','Tom','Bob'])

# index在这里和之前不同,并不能改变原有index
# 如果指向新的标签,值为NaN
df3 = pandas.DataFrame(data, index = ['a','b','c'])
print(df2)
print(df3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值