是什么
Pandas 是基于 NumPy 的一个开源 Python 库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。它的名字来源是由“ Panel data”(面板数据,一个计量经济学名词)两个单词拼成的。简单地说,你可以把 Pandas 看作是 Python 版的 Excel。用Python处理数据就像使用Exel或SQL一样简单方便。
Pandas数据结构
Pandas主要采用Series和DataFrame两种数据结构。Series是一种类似一维数据的数据结构,由数据(values)及索引(indexs)组成,而DataFrame是一个表格型的数据结构,它有一组序列,每列的数据可以为不同类型(NumPy数据组中数据要求为相同类型),它既有行索引,也有列索引。
Series
Series是一维带标签的数组,数组里可以放任意的数据(整数,浮点数,字符串, Python Object)。Series的标签索引(它位置索引自然保留)其基本的创建函数是:
<center>s = pd.Series(data, index=index)
其中index是一个列表,用来作为数据的标签。
data的类型可以是Python字典、列表等。
Series 索引
s.values #显示s1的所有值 out : array([ 1, 3, 6, -1, 2, 8], dtype=int64)
s.index #显示s1的索引(位置索引或标签索引) out : RangeIndex(start=0, stop=6, step=1)
s1 = pd.Series([1, 3, 6, -1, 2, 8], index=['a', 'b', 'c', 'd', 'e', 'f']) #定义标签索引
s1
数据访问
# 访问Series中数据的两种方法
import pandas as pd
s1 = pd.Series([ 75, 90, 61],index=['张三', '李四', '陈五'])
print(s1[0]) #通过元素储存位置访问
print(s1['张三']) #通过指定索引访问
# 结果均为 75
数据修改
可以直接通过赋值的方法修改Series中的对应值。
# 修改Series中的值
import pandas as pd
s1 = pd.Series([ 75, 90, 61],index=['张三', '李四', '陈五'])
s1['张三'] = 60 #通过指定索引访问
s1[1] = 60 #通过元素储存位置访问
print(s1)
数据修改
可以直接通过赋值的方法修改Series中的对应值。
算术运算
Pandas会根据索引index索引对相应数据进行计算。如代码所示,可以直接对Series结构进行加减乘除运算符,当出现index不匹配的情况时会输出NaN。
import pandas as pd
sr1 = pd.Series([1, 2, 3, 4],['a','b','c','d'])
sr2 = pd.Series([1, 5, 8, 9],['a','c','e','f'])
sr2 - sr1
Series数据分析
(1) 切片操作
数据切片的概念源于Numpy数组,Series对象使用类似NumPy中ndarray的数据访问方法实现切片操作。
#Series的切片操作
import pandas as pd
s1 = pd.Series([ 75, 90, 61, 59],index=['a', 'b', 'c', 'd'])
s1[1:3]
(2) 数据缺失处理
Pandas工具包提供了相应处理方法可以轻松实现缺失数据的处理,如下表:
# Series填充缺失值
import pandas as pd
import numpy as np
s1 = pd.Series([ 75, 90, np.NaN, 59],index=['a', 'b', 'c', 'd'])
# 查看缺失值
s1.isnull()
# a False
# b False
# c True
# d False
# 删除缺失值
s1.dropna()
# a 75.0
# b 90.0
# d 59.0
# 填充缺失值
s1.fillna(0)
# a 75.0
# b 90.0
# c 0.0
# d 59.0
(3) 统计分析
Pandas数据分析库提供了强大的数据统计功能,因此通过Series可以非常方便进行数据统计分析。下面是一些常用的Series描述性统计方法。
DataFrame
DataFrame除了索引有位置索引也有标签索引,而且其数据组织方式与MySQL的表极为相似,除了形式相似,很多操作也类似,这就给操作DataFrame带来极大方便。这些是DataFrame特色的一小部分,它还有比数据库表更强大的功能,如强大统计、可视化等等。
DataFrame有几个要素:index、columns、values等,columns就像数据库表的列表,index是索引,values就是值。DataFrame的基本格式是:
<center>df = pd.DataFrame(data, index=index, columns=columns)
其中 index是行标签, columns是列标签、
data可以是由一维 numpy数组,list, Series构成的字典、二维 numpy数组、一个 Series、另外的 DataFrame对象
复制
####自动生成一个3行4列的DataFrame,并定义其索引(如果不指定,缺省为整数索引)####及列名
df = pd.DataFrame(np.arange(12).reshape((3,4)), columns=['a1', 'a2', 'a3', 'a4'], index=['a', 'b', 'c'])
df
获取一些 DataFrame 结构的属性
df.index #显示索引(有标签索引则显示标签索引,否则显示位置索引)
df.columns ##显示列名
df.values ##显示值
Series 和DataFrame关系:
DataFrame
是由多个Series
组成的。无论是行还是列,单独拆分出来都可以视为一个Series
。- 在
DataFrame
中,每一列是一个Series
对象,它共享DataFrame
的行索引。同样地,如果按行操作DataFrame
,每一行也可以看作是一个Series
对象,它共享DataFrame
的列索引。