- DataFrame是Python中Pandas库中的一种数据结构,它类似excel,是一种二维表。DataFrame的单元格可以存放数值、字符串等,这和excel表很像,同时DataFrame可以设置列名columns与行名index。
一. 创建DataFrame
1.1. numpy创建
- 使用numpy函数创建: index和columns这两个参数是可选的,你可以选择不设置,而且这两个list是可以一样的。
import pandas as pd
import numpy as np
print(list("abc"))
df1 = pd.DataFrame(np.random.randn(3, 3), index=list("abc"), columns=list("ABC"))
1.2. 直接创建
df2 = pd.DataFrame([[1, 2, 3],
[2, 3, 4],
[3, 4, 5]], index=list("abc"), columns=list("ABC"))
1.3. 字典创建
import pandas as pd
import numpy as np
dict1 = {"name":["张三", "李四", "王二"],
"age":[22, 44, 35],
"gender":["男", "女", "男"]}
df3 = pd.DataFrame(dict1)
二. DataFrame属性
2.1. 查看列的数据类型
df3.dtypes
2.2. 查看DataFrame的头尾
- 使用
head 可以查看前几行的数据,默认的是前5行,不过也可以自己设置。 - 使用
tail 可以查看后几行的数据,默认也是5行,参数可以自己设置。
import numpy as np
import pandas as pd
data = np.random.randn(6, 4)
df = pd.DataFrame(data, index=list("abcdef"), columns=list("ABCD"))
df.head(2)
df.tail(2)
2.3. 查看行名与列名
df.index
df.columns
2.4. 查看数据值.values
- 使用values可以查看DataFrame里的数据值,返回的是一个ndarray(转成numpy类型)。
df.values
df['B'].values
- 如果查看某一行所有的数据值。使用iloc查看数据值(但是好像只能根据行来查看?),iloc是根据数字索引(也就是行号)。
df.iloc[0]
2.5. 查看行列数
df.shape[0]
df.shape[1]
df.shape
2.6. 切片和索引
- 使用冒号进行切片。
- 切片表示的是行切片
- 索引表示的是列索引
三. DataFrame操作
3.1. 转置
3.2. 描述性统计
df.describe()
- 如果有的列是非数值型的,那么就不会进行统计。
- 如果想对行进行描述性统计,转置后再进行describe。
3.3. 运算之求和、数乘及平方
- 使用
sum() 默认对每列求和,sum(1) 为对每行求和。
df.sum()
df.sum(1)
df.apply(lambda x: x*2)
df**2
3.4. 新增列
- 扩充列可以直接像字典一样,列名对应一个list,但是注意list的长度要跟index的长度一致。
3.5. 两个DataFrame合并
- 使用
join 可以将两个DataFrame合并,但只根据行列名合并,并且以作用的那个DataFrame的为基准。
- 但是,join这个方法还有how这个参数可以设置,合并两个DataFrame的交集或并集。参数为
’inner’ 表示交集,'outer’ 表示并集。
- 如果要合并多个Dataframe,可以用list把几个Dataframe装起来,然后使用concat转化为一个新的Dataframe。
df10 = pd.DataFrame([1, 2, 3, 4, 5, 6],
index=list('ABCDEF'), columns=['a'])
df11 = pd.DataFrame([10, 20, 30, 40, 50, 60],
index=list('ABCDEF'), columns=['b'])
df12 = pd.DataFrame([100, 200, 300, 400, 500, 600],
index=list('ABCDEF'), columns=['c'])
list1 = [df10.T, df11.T, df12.T]
df13 = pd.concat(list1)
df13
3.6. 去重(重复行)
df.drop_duplicates(subset=None,
keep='first',
inplace=False
)
subset :指定是哪些列重复。keep :去重后留下第几行,{‘first’, ‘last’, False}, default ‘first’} ,如果是False ,则去除全部重复的行。inplace :是否作用于原来的df 。
df14 = pd.DataFrame(data=[[1, 2, 3],
[1, 2, 4],
[1, 2, 4],
[1, 2, 3],
[1, 2, 5],
[1, 2, 5]],
index=list('ABCDEF'),
columns=['a', 'b', 'c'])
df14.drop_duplicates(keep='last')
df14.drop_duplicates(subset=('c',))
四. Python assert 关键字
x = "hello"
assert x == "hello"
assert x == "goodbye"
- 调试代码时使用assert关键字。
assert 关键字可以测试代码中的条件是否返回True ,否则,程序将引发AssertionError 。如果代码返回False,则可以编写一条消息,如下例子:
x = "hello"
assert x == "goodbye", "x should be 'hello'"
五. 参考
|