机器学习——Pandas的基本使用

pandas是一个python的模块,基于numpy,该模块是为了解决数据分析任务而创建的,相比较与numpy,pandas具有更多方便矩阵计算中使用的方法。

一维数组Series

pandas的一维数组为Series,基本操作和numpy的ndarray一致,详情参见机器学习——Numpy的基本使用, 不同之处在于Series不仅有比ndarray多一些的函数以外(例如describe),它还多一个索引的能力。

from pandas import Series

# 创建一个基本的Series,使用方式和ndarray基本一致
s1 = Series([1,2,3,4,5])
print(s1)

# 创建一个Series,并指定其索引
s2 = Series([1,2,3,4,5], index=['one','two','three','four','five'])
print(s2)
print(s2['one'])

可以看到,如果不指定index参数,则Series会生成一个默认的索引0,1,2,3,4。Series的运算并不时根据位置顺序来的,而是根据索引进行的

from pandas import Series

s1 = Series([1,2,3], index=['a','b','c'])
s2 = Series([1,2,3], index=['b','a','c'])
print(s1 + s2)
# a    3
# b    3
# c    6

如果相对应的索引不存在时,结果会为NaN,如果想要去掉NaN的值,可以使用dropna函数,或者想要用自定义的值来替换掉NaN的值,可以使用add以及fill_value

from pandas import Series

s1 = Series([1,2,3], index=['a','b','c'])
s2 = Series([1,2,3], index=['b','c','d'])
s3 = s1 + s2
print(s3)
# a    NaN
# b    3.0
# c    5.0
# d    NaN
print(s3.dropna())
# b    3.0
# c    5.0

Series的计算函数

ndarray中的计算函数在Series中都能找到对应的。但是若其中的函数不满足计算要求时,可以使用apply函数进行扩展

from pandas import Series

def func(x):
    return x*2

s1 = Series([1,2,3,4,5])
# s2 = s1.apply(lambda x: x*2)
s2 = s1.apply(func)
print(s2)

DataFrame的创建

DataFrame可以理解为二维数组的一个升级版,它的行和列上都可以有一个标签

from pandas import DataFrame

# 创建一个3行2列的DataFrame,列标签为'A', 'B', 行标签为默认的index 0, 1, 2
df1 = DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]})
print(df1)
#    A  B
# 0  0  3
# 1  1  4
# 2  2  5

# 创建一个2行3列的DataFrame,列标签为'A', 'B', 'C', 行标签被指定为1, 2
df2 = DataFrame([[0, 1, 2], [3, 4, 5]],columns=['A', 'B', 'C'], index=[1, 2])
print(df2)
#    A  B  C
# 1  0  1  2
# 2  3  4  5

DataFrame的基本使用

from pandas import DataFrame

df = DataFrame([[0, 1, 2], [3, 4, 5]],columns=['A', 'B', 'C'], index=[1, 2])
#    A  B  C
# 1  0  1  2
# 2  3  4  5

# 读取行
df.loc(1)
df.iloc(0)

# 读取列
df['A']
点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注