DataFrame
创建特定的index和columns
在数据分析-pandas(2)的时候,我们简单的讲解了一下关于DataFrame
的横向索引index
和纵向索引columns
,他们默认是从0
开始的,现在我们来学习一下,如何创建特定的index
和columns
代码实例
创建默认的DataFrame
#导入pandas包
In [2]: import pandas as pd
#导入numpy包
In [3]: import numpy as np
#生成DataFrame矩阵数据表
In [4]: t = pd.DataFrame(np.arange(1,13).reshape(3,4))
#得到结果
In [5]: t
Out[5]:
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
创建、设置index和columns的值
#创建特定的index和columns的DataFrame
In [6]: t = pd.DataFrame(np.arange(1,13).reshape(3,4),index=["a","b","c"],columns=["w","x","y","z"])
#输出打印 t
In [7]: t
Out[7]:
w x y z
a 1 2 3 4
b 5 6 7 8
c 9 10 11 12
可以看到,我们的DataFrame
矩阵数据表index
标签和columns
标签的值发生了变化,由最初的0、1、2、3
变成了a、b、c
和w、x、y、z
DataFrame和Series的关系
我们在数据分析-pandas(1)讲解了Series数组,现在来串一下DataFrame和Series的关系
上图就是一个DataFrame
矩阵数据表,但是,如果单看红色边框圈出来的部分,其实就是Series
数组
因此,我们说:DataFrame是Series容器
那么,问题就来了
既然说DataFrame
是Series
的容器,那么,当初在创建Series
的时候可以通过传入字典来创建,那么,我们创建DataFrame的时候可不可也通过传入字典来创建呢?
答案是:当然可以
传入字典创建DataFrame
#创建字典 a
a = {"name":["小红","小亮","小张"],"age":[20,18,22],"sex":["女","男","男"]}
#生成 DataFrame 矩阵数据表
t = pd.DataFrame(a)
#输出打印 t
In [9]: t
Out[9]:
age name sex
0 20 小红 女
1 18 小亮 男
2 22 小张 男
可以看到,当我们传入字典创建DataFrame
的时候,我们字典的键,成为了columns
的标签,事实也证明,我们DataFrame
是可以通过传入字典创建的
那么,当我们学习了上面的知识点后,又有一个问题接踵而至,对于一个dataframe类型,既有行索引,又有列索引,我们能够对他做什么操作呢
DataFrame的方法
DataFrame的基础属性
方法 | 作用 |
---|---|
df.shape | 返回矩阵数据表的行数和列数 |
df.dtypes | 返回矩阵数据表的列数据类型 |
df.ndim | 返回数据维度 |
df.index | 返回行索引 |
df.columns | 返回列索引 |
df.values | 对象值,二维ndarry数组 |
DataFrame的整体情况查询
方法 | 作用 |
---|---|
df.head(3) | 显示头部几行,默认是5行数据 |
df.tail(3) | 显示末尾几行,默认是5行数据 |
df.info() | 相关信息概览:行数、列数,列索引,列非空值个数,列类型,内存占用等 |
df.sort_values(by=“columns标签”) | DataFrame中排序的方法,指按照columns标签索引进行排序,默认是升序(ascending=True),通过设置asceding改变排序方式 |
df.describe() | 快速综合统计结果:计数,均值,标准差,最大值,四分位数,最小值 |