内容参考自以下博客
https://www.yiibai.com/pandas/python_pandas_dataframe.html
DataFrame简介
在pandas中,它的中文名叫“数据帧”,DataFrame用于描述一个二维数据结构,可以用来表示‘关系数据库表’ 或者 ‘二维矩阵’等等。
创建DataFrame
DataFrame的构造函数
image.png构造函数参数
image.png可以看到DataFrame支持很多类型的数据,接下来依次尝试。
1. 使用dict作数据源
import pandas as pd
d = {
'column1': [1, 2],
'column2': [3, 4]
}
df = pd.DataFrame(data=d)
print(df)
image.png
在控制台的输出中可以看到,dict的key被作为列明展示了出来。
如果只想单纯的传入数据,然后由我们自己制定行名和列名呢?
可以尝试一下用list作为数据源。
2. 使用list作数据源
l = [
[1, 2],
[3, 4]
]
df = pd.DataFrame(data=l, index=['row1', 'row2'], columns=['column1', 'column2'])
print(df)
image.png
这次在构造DataFrame时传入了三个构造参数,index表示行名,columns表示列明,它们接受的都是一个序列容器。
那么有哪些序列是允许的呢?list, tuple,set是可以的,虽然字符串虽然也是序列,但是不行,会引发TypeError异常。
3. 使用tuple作数据源
t = (
(1, 2, 3, 4),
(5, 6, 7, 8)
)
df = pd.DataFrame(data=t, index=range(len(t)), columns=('col1', 'col2', 'col3', 'col4'))
print(df)
image.png
经过测试,data参数是支持tuple结构的。
而且顺便发现index的序列的个数要和data中行的数目一致。columns参数应该也是同理。
4. 使用set作数据源
集合的构造函数set()是个很神奇的函数,它可以帮助我们把一个序列中重复的值去掉。
在数据处理和分析的过程中也会经常用到,测试一下set是否可以构造DataFrame。
很遗憾,set不支持,理由是set无法被hash,具体原因不详,先不管了。
DataFrame的属性
作为pandas中最重要的类,属性我们应该有所了解,才能方便coding。
以刚刚用list作数据源生成的DataFrame为例,在df那里打个断点,然后在Debugger中看一下。
image.png
image.png
上面两张图可以看到,属性真是多的一匹...
想要一下子都看懂,几乎是不可能了,先找几个常用的、重要的看看就得了。
我认为以下几个属性应该会比较常用:
1. T:转置矩阵。
image.png2. axes: 坐标轴信息(或者说是 行列信息)
image.png那么如何把行和列的信息拿出来的呢 ?
行信息:DataFrame.axes[0].values.array
列信息:DataFrame.axes[1].values.array
3. shape: 矩阵形状
image.pngtuple中第一个元素2,表示有2行。
tuple中第二个元素2,表示有2列。
4. values: DataFrame的取值属性
image.png如果比如说我想取第2行第1的数据呢?
# 别忘了,下标是从0开始的
df.values[1][0] # output: 3
关于DataFrame的其他属性
有个网站的总结的不错,传送门:http://liao.cpython.org/pandas09/
网友评论