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)