pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=None)
构造方法返回一个DataFrame对象。
参数data为输入的数据,可以是numpy数组、字典、元组、列表等类型,参数index表示行索引,列表长度与数组的行数相等,参数columns表示列索引,参数dtype表示数据的类型,可以为python数据类型或numpy数据类型。
1、通过numpy数组创建DataFrame对象
>>> a = np.reshape(np.arange(12), (3, 4))
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> df = pd.DataFrame(a)
>>> df
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> df1 = pd.DataFrame(a, index=['a', 'b', 'c'])
>>> df1
0 1 2 3
a 0 1 2 3
b 4 5 6 7
c 8 9 10 11
>>> df2 = pd.DataFrame(a, columns=['a', 'b', 'c', 'd'])
>>> df2
a b c d
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
>>> df3 = pd.DataFrame(a, dtype=np.float32)
>>> df3
0 1 2 3
0 0.0 1.0 2.0 3.0
1 4.0 5.0 6.0 7.0
2 8.0 9.0 10.0 11.0
2、通过字典创建DataFrame对象
>>> data = {"names":["Joe", "John", "Lili"],
"ages":[12, 24, 18],
"sexes":["man", "man", "woman"]}
>>> df = pd.DataFrame(data)
>>> df
names ages sexes
0 Joe 12 man
1 John 24 man
2 Lili 18 woman
3、通过列表、元组创建DataFrame对象
>>> data = [[2, 3, 4],
[3, 4, 5],
[4, 5, 6]]
>>> df = pd.DataFrame(data)
>>> df
0 1 2
0 2 3 4
1 3 4 5
2 4 5 6
>>> data = [(2, 3, 4),
(3, 4, 5),
(4, 5, 6)]
>>> df = pd.DataFrame(data)
>>> df
0 1 2
0 2 3 4
1 3 4 5
2 4 5 6
DataFrame对象主要包括一些查看数据的方法、索引、切片以及对数据的增加、修改、求均值、最大最小值、求和、转置、排序等操作。
对象属性/方法 | 描述 |
---|---|
values | 返回一个numpy数组 |
dtypes | 返回数据的类型 |
index | 返回行索引 |
columns | 返回列索引 |
shape | 返回DataFrame的形状,一个元组 |
size | 返回DataFrame的大小,一个整数 |
head([n]) | 返回前n行数据,默认为5 |
tail([n]) | 返回最后n行数据,默认为5 |
mean([axis, skipna, level, numeric_only]) | 返回指定列或全部数据的均值 |
sum([axis, skipna, level, numeric_only, …]) | 返回指定列或者全部数据的和 |
max([axis, skipna, level, numeric_only]) | 返回指定列或者全部数据的最大值 |
min(([axis, skipna, level, numeric_only]) | 返回指定列或者全部数据的最小值 |
sort_values(by[, axis, ascending, inplace, …]) | 根据指定行列将数据进行排序 |
1、索引、切片
>>> data = np.reshape(np.arange(24), (6, 4))
>>> data
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
>>> df = pd.DataFrame(data)
>>> df
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
5 20 21 22 23
# 索引
# 行索引
>>> df.iloc[0]
0 0
1 1
2 2
3 3
Name: 0, dtype: int32
# 列索引
>>> df.iloc[:,0]
0 0
1 4
2 8
3 12
4 16
5 20
Name: 0, dtype: int32
# 切片
# 行切片
>>> df.iloc[:2]
0 1 2 3
0 0 1 2 3
1 4 5 6 7
# 列切片
>>> df.iloc[:, :2]
0 1
0 0 1
1 4 5
2 8 9
3 12 13
4 16 17
5 20 21
# 行列切片
>>> df.iloc[:2, :2]
0 1
0 0 1
1 4 5
2、增删改查
>>> data = np.reshape(np.arange(24), (6, 4))
>>> data
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
>>> df = pd.DataFrame(data)
>>> df
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
5 20 21 22 23
# 返回前2行数据
>>> df.head(2)
0 1 2 3
0 0 1 2 3
1 4 5 6 7
# 返回后2行数据
>>> df.tail(2)
0 1 2 3
4 16 17 18 19
5 20 21 22 23
# 返回第一列数据
>>> df[0]
0 0
1 4
2 8
3 12
4 16
5 20
Name: 0, dtype: int32
>>> type(df[0])
# DataFrame的数据,numpy形式
>>> df.values
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]])
# DataFrame的行名称
>>> df.index
RangeIndex(start=0, stop=6, step=1)
# DataFrame的列名称
>>> df.columns
RangeIndex(start=0, stop=4, step=1)
# DataFrame的数据类型
>>> df.dtypes
0 int32
1 int32
2 int32
3 int32
dtype: object
# 增加一列数据
>>> column = pd.Series([1, 2, 3, 4, 5, 6])
>>> df[4] = column
>>> df
0 1 2 3 4
0 0 1 2 3 1
1 4 5 6 7 2
2 8 9 10 11 3
3 12 13 14 15 4
4 16 17 18 19 5
5 20 21 22 23 6
# 每一列的最大值
>>> df.max()
0 20
1 21
2 22
3 23
4 6
dtype: int64
# 每一列的均值
>>> df.mean()
0 10.0
1 11.0
2 12.0
3 13.0
4 3.5
dtype: float64
# 降序排列
>>> df.sort_values(by=0, ascending=False)
0 1 2 3 4
5 20 21 22 23 6
4 16 17 18 19 5
3 12 13 14 15 4
2 8 9 10 11 3
1 4 5 6 7 2
0 0 1 2 3 1