一、定义:
"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值、字符串、布尔值等。Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构。
# 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'>
二、创建方式
1.利用字典、列表互相嵌套生成
(1)通过列表组成的字典创建DataFrame
通过字典创建就轻松很多,字典的数据可以来自爬虫,将爬取的各种数据保存成DataFrame的格式,便于日后的数据分析。假设我们有一组persons数据为字典格式:
import pandas as pd
import numpy as np
persons = {'name': ['小花', '狗蛋', '二狗', '小草'],
'age': [17, 20, 30, 20],
'gender': ['女', '男', '男', '女']}
df = pd.DataFrame(persons)
print(df)
"""
结果
name age gender
0 小花 17 女
1 狗蛋 20 男
2 二狗 30 男
3 小草 20 女
所有的列必须对齐,即每列都有四个数据。
"""
(2)通过列表组成的列表创建DataFrame
import pandas as pd
data = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
df = pd.DataFrame(data)
print(df)
"""
结果
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
"""
import pandas as pd
data = [[1, 2, 3, 4], [5, 6, 7, 8, 89], [9, 10, 11, 12]]
df = pd.DataFrame(data)
print(df)
"""
结果
0 1 2 3 4
0 1 2 3 4 NaN
1 5 6 7 8 89.0
2 9 10 11 12 NaN
第一维(0轴)代表行,第二维(1轴)代表列,某一行的数据没有对齐多出来,
其他行的自动补齐,值为NaN
"""
可以设置索引值,通过index和columns属性:
import pandas as pd
list1 = [[5, 2, 0, 4], [2, 3,