DataFrame(表型数据结构,二维数组,既有行索引也有列索引,可以看成是由若干个Series组成)
DataFrame组成结构:pandas.DataFrame(data, index, column, dtype, copy)
data:一组数据,每列都可以是不同类型的值
index:设置索引值,即:行标签
columns:设置列标签,当设置columns时行与列转置
dtype: 数据类型, 当前的格式设置的是整个数据表
copy: 是否拷贝数据,默认是FALSE
data为字典类型
import pandas as pd
data = {
'id': [12, 15, 18],
'name': ['Laotian', 'Xiaoping', 'xiaomi'],
'grades': [88, 99, 66],
'like': ['羽毛', '足球', '篮球']
}
df = pd.DataFrame(data) # 按照源数据的格式转换成数据表
print(f"行索引为0,1,2:\n{df}")
# 输出结果:
#行标为0,1,2:
# id name grades like
#0 12 Laotian 88 羽毛
#1 15 Xiaoping 99 足球
#2 18 xiaomi 66 篮球
data为列表格类型时,设置行index、列column索引
import pandas as pd
data1 = [
[12, 15, 18],
['Laotian', 'Xiaoping', 'xiaomi'],
[88, 99, 66],
['羽毛', '足球', '篮球']
]
df1_1 = pd.DataFrame(data1, index=['x1', 'x2', 'x3', 'x4']) # 设置列索引
df1_2 = pd.DataFrame(data1, index=['id', 'name', 'grades', 'like'], columns=['x1', 'x2', 'x3'])
print(f"行索引为x1,x2,x3,x4:\n{df1_1}")
# 输出结果:
#行索引为x1,x2,x3,x4:
# 0 1 2
#x1 12 15 18
#x2 Laotian Xiaoping xiaomi
#x3 88 99 66
#x4 羽毛 足球 篮球
print(f"行索引为id,name,grades,like;列索引为x1,x2,x3:\n{df1_2}")
# 输出结果:
#行索引为id,name,grades,like;列索引为x1,x2,x3:
# x1 x2 x3
#id 12 15 18
#name Laotian Xiaoping xiaomi
#grades 88 99 66
#like 羽毛 足球 篮球
data为字典类型,numpy的array来设置列的数据格式,与dtype的碰撞
import pandas as pd
import numpy as np
# np.array([], dtype=数据类型)设置此列的数据类型
data2 = {
'id': np.array([12, 15, 18], dtype=int),
'name': np.array(['Laotian', 'Xiaoping', 'xiaomi'], dtype=str),
'grades': np.array([88, 99, 66], dtype=float),
'like': np.array(['羽毛', '足球', '篮球'], dtype=str)
}
df2_1 = pd.DataFrame(data2, index=['x1', 'x2', 'x3'])
df2_2 = pd.DataFrame(data2, index=['x1', 'x2', 'x3'], dtype=float)
print(f"行索引为x1,x2,x3,数据类型同源数据:\n{df2_1}")
# 输出结果:
#行索引为x1,x2,x3,数据类型同源数据:
# id name grades like
#x1 12 Laotian 88.0 羽毛
#x2 15 Xiaoping 99.0 足球
#x3 18 xiaomi 66.0 篮球
print(f"行索引为x1,x2,x3,数据类型 强转 为float:\n{df2_2}")
# 输出结果:
#行索引为x1,x2,x3,数据类型 强转 为float:
# id name grades like
#x1 12.0 Laotian 88.0 羽毛
#x2 15.0 Xiaoping 99.0 足球
#x3 18.0 xiaomi 66.0 篮球