Pythonpandas基础
Posted zhangqingbo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pythonpandas基础相关的知识,希望对你有一定的参考价值。
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、描述统计性的概述与计算
以上是关于Pythonpandas基础的主要内容,如果未能解决你的问题,请参考以下文章
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础