【Python】pandas基础

pandas基础

pandas:主要进行数据清理和数据分析

1、pandas数据结构

1.1 Series

1.1.1 Series可以是一种一维数组型对象

包含一个值序列,并且包含数据标签,称为索引(index)。

  • 创建Series

    创建Series,不指定索引或指定索引

obj = pd.Series([1, 3, 5, 7])

obj = pd.Series([1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])

  • 数据访问

Series对象有values和index属性,obj .values和obj .index 分别获取值和索引

obj ['a'] >> 1

obj ['a', 'b', 'd']

obj [obj > 2]

1.1.2 Series也可以是一个长度固定的有序字典

‘b’ in obj >> True

可以直接由字典生成Series,假设stata“是一个字典,则

obj1 = Series(stata)

  • 利用函数检查数据缺失:

pd.isnull(obj1)

pd.notnull(obj1)

  • isnull和notnull也是Series的实例方法:

obj.isnull()

obj.notnull()

1.1.3 自动对齐索引功能

obj2 = pd.Series([1, 2, 3, 4], index = ['a', 'b', 'c', 'd'])

obj3 = pd.Series([4, 2, 6, 1], index = ['b', 'c', 'd', 'f'])

obj4 = obj2 + obj3

输出:

a     NaN
b     6.0
c     5.0
d    10.0
f     NaN
dtype: float64

Series对象自身和其索引都有name属性

obj4.name = 'population'
obj4.index.name = 'state'
obj4

输出:

state
a     NaN
b     6.0
c     5.0
d    10.0
f     NaN
Name: population, dtype: float64

1.2 DataFrame

DataFrame表示的是矩阵的数据表,它包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等),DataFrame即有行索引也有列索引,被视为一个共享相同索引的Series的字典。在DataFrame中,数据被储存为一个以上的二维块,而不是列表、字典或其他一维数组的集合。可以利用分层索引在DataFrame中展现更高维度的数据。

创建,将会按照index顺序排列

data = {'state':['ohio', 'ohio', 'ohio', 'Nevada', 'Nevada', 'Nevada'],
'year':[2000, 2001, 2002, 2003, 2004, 2005],
'pop':[1.5, 1.7, 1.6, 5.0, 2.3, 3.1]}
frame = pd.DataFrame(data)

指定顺序

frame = pd.DataFrame(data, column=['year', 'pop','state'])

frame

输出:

state year pop
0 ohio 2000 1.5
1 ohio 2001 1.7
2 ohio 2002 1.6
3 Nevada 2003 5.0
4 Nevada 2004 2.3
5 Nevada 2005 3.1

frame.head() #head方法会选出前五行

frame.columns #读取列名

frame.state #读取state列

frame['state'] #读取state列

frame.loc['three'] #读取第3行

列的应用可以修改,若被赋值的列不存在,则会生成新的列

frame['debt'] = 1.6 #在frame的最右侧增加一列debt,值全为1.6

frame['debt'] = np.arange(6) #在frame的最右侧增加一列debt,值为0,1,2,3,4,5

frame['eastern'] = frame.state == 'ohio' #在frame的最右侧增加一列eastern,值为布尔值

del frame['eastern'] #删除eastern列

frame.T #转置frame,和Numpy的语法一致

frame.set_index('year') # 设置year为索引

frame.reset_index('year') # 还原索引为默认的整型索引(增加了一列整型索引)

​ #reset_index(drop=True)(不增加一列整型索引)

1.3 索引对象

索引对象不可变,用户无法修改索引对象。

2、基本功能

了解与Series或DataFrame中数据交互的基础机制。

2.1 重建索引

reindex方法

obj = pd.Series([4.5, 7.2, -5.3, 3.6], index=['d','b','a','c'])

obj2 = obj.reindex(['a','b','c','d','e']) #按照新索引排序obj,索引e的值之前不存在,将引入缺失值(NaN)

reindex方法还可添加参数。

2.2 轴向上删除条目

new_obj = obj2.drop('c') #删除obj的第三行

frame = frame.dorp(['Nevada']) #删除的Nevada行

.drop还可添加参数

2.3 索引、选择与过滤

选择

obj['b'] #选择索引为b的行

obj[1:3] #选择第1-3行

obj[[1, 3]] #选择第1行和3行

obj[obj < 2] #选择值小于2的行

frame的选择类似,既可以选择行,也可以选择列

还可以使用loc和iloc选择数据

2.4 整数索引

2.5 算术和数据对齐

  • 使用填充值得算术方法

df1.add(df2, fill_value=0) #加法时缺失值补0

还有别的方法:加减乘除、整除、幂次方等

2.6 函数应用和映射

  • Numpy的通用函数对pandas对象也有效

np.abs(frame) #计算frame值得绝对值

  • 可以将函数用于一行或一列

    2.7 排序和排名

    obj.sort_index()

    frame.sort_index(axis = 1)

    frame.sort_values()

3、描述统计性的概述与计算

猜你喜欢

转载自www.cnblogs.com/Ireland/p/12382308.html