一、什么是Pandas
Pandas是主要用来数据分析、数据操作、数据清洗的基于NumPy(Numerical Python:同样是python库之一,用来存储和处理大型矩阵,主要用于数组计算)的开源python库,是一个强大的分析结构化数据工具集,通常通过新建两种对象来使用pandas:Series 和 DataFrame。
1.Series
Series是一种类似于一维数组的对象,是Pandas中最基本的数据结构对象,是DataFrame的列对象或行对象,简单来说DataFrame就是一个有行索引和列索引、内容不仅限数字的行列式,Series对象就是其中的一行或一列(包含行/列索引)。
Series由下面两个部分组成:
* values:一组数据(字面意义就是值,类型是整型、浮点数、字符串都可以)。
* index :行/列索引,如果没有自定义的索引,系统就会自动创建一个0 ~ N的整数型索引。
以下是创建Series对象需要学习到的代码(Series中即使是一行数据也会竖起来以列的形式展示):
import numpy as np
import pandas as pd
'''创建一个Series对象'''
# 方式一:先创建一个ndarray对象,将ndarray对象中的内容赋值给Series对象
arr = np.array([1, 4, 6])
s1 = pd.Series(data=arr)
print(s1)
# 若想验证Series对象的类型可以使用type()函数
print(type(s1))
# 方式二:直接将arr传入Series对象,省去‘data=’
s2 = pd.Series(arr)
print(s1) # 得到的结果和方式一一致
# 方式三:直接传入数据,不使用ndarray对象当作赋值媒介
s3 = pd.Series([1, 2, 3])
print(s3)
# 方式四:传入字典、元组, 以上三种方式都可以使用,这里仅展示一种方式
# 传入字典
s_dict = pd.Series({'Cat' : 'Tom', 'Dog': 'Snoopy', 'Fish' : 'Nemo'})
print(s_dict)
# 传入元组
s_tuple = pd.Series((1, 8, 8, 6))
print(s_tuple)
'''自定义Series对象的索引'''
'''
以上生成的Series对象中的索引都是系统自动生成的整数型索引
如果不想要系统自动生成的索引可以选择自定以索引,
使用Series对象的index即可自定义索引
'''
#方式一:传入ndarray对象
s11 = pd.Series(arr, index=['索引一', '索引二', '索引三'])
print(s11)
# 方式二:直接传入列表
s12 = pd.Series([1, 2, 3], index=['索引一', '索引二', '索引三'])
print(s12)
# 方式三:直接传入元组
s13 = pd.Series((1, 2, 4), index=['索引一', '索引二', '索引三'])
print(s13)
# 注:字典已经包含了索引故不能用以上三种方式传入数据
2.DataFrame
DataFrame直接翻译就是数据框,含有一组或多组的Series对象,直白说DataFrame就是一个由Series对象一条一条填入的框架。DataFrame每列可以是不同的值类型,是一个有行列索引的二位数据表,Series中的许多方法在DataFrame中也同样适用。
以下是创建DataFrame对象的相关代码:
'''创建一个DataFrame对象:传入字典的方式'''
# 以下DataFrame类型对象简称df对象
# df对象的创建需要通过传入字典的方式
df1 = pd.DataFrame({
'id' : [100, 200, 300],
'name':['Toothless', 'Dragon', 'Patrick']
})
print(df1)
# 同样的df对象也能自定义索引
df2 = pd.DataFrame({
'id' : [100, 200, 300],
'name':['Toothless', 'Dragon', 'Patrick']
}, index=['*', '*', '*'])
print(df2)
# 若像改变df对象中列的顺序,可以通过类中的columns属性进行更改
# !!!注意一般建议写字典的时候就把顺序写好
df3 = pd.DataFrame({
'id' : [100, 200, 300],
'name':['Toothless', 'Dragon', 'Patrick']
}, index=['*', '*', '*'], columns=['name', 'id'])
print(df3)
'''创建DataFrame对象:传入列表+元组'''
# 此处的‘index=’可写可不写,看用户的需求,columns属性也一样
df4=pd.DataFrame([
(111, 'aaa', 12.3),
(222, 'bbb', 23.4)
], index=['索引一', '索引二'])
print(df4)