pandas(一)
import numpy as py
import pandas as pd
Series对象
data= pd.Series([0.25,0.5,0.75,1.0]) 默认索引是数字
data=pd.Series([0.25,0.5,0.75,1.0],index=['a','b','c','d']) 用字符串定义索引,也可以用不连续的索引
data['b']
data['a':'c'] 支持切片操作
pd.Series(data,index=index)
data可以是列表或numpy数组
pd.Series([2,4,6])
也可以是标量,创建时会重复填充到每个索引上
pd.Series([5,index=[100,200,300])
也可以是字典,index默认是字典的键
pd.Series({2:'a',3:'b'})
series的字典式映射方法
data=pd.Series([0.25,0.5,0.75,1.0],
index=['a','b','c','d'
)
判断data中是否有a索引
'a' in data
获取data索引
data.keys()
获取所有数据
list(data.items())
增加新索引
data['e']=10.25
切片:
显示索引做切片,包含最后一个值
data['a':'c']
隐式整数索引做切片,不包含年最后一个值
data[0:2]
掩码:
data[(data>0.3) & (data<0.7)]
花哨索引:
data[['a,'e']]
索引器:为了防止series为整数索引是,取值为显式索引,切片为隐式索引而混淆
loc:表示取值和切片都是显式
data=pd.Series(['a','b','c'],index=[1,3,5])
data.loc[1]
data.loc[1:3]
iloc:表示取值和切片都是隐式
data.iloc[1]
data.iloc[0:2]
DataFrame对象
通过字典列表创建
data=[{'a':i,'b':2*i} for i in range(3)]
x=pd.DataFrame(data)
通过series对象创建
pd.DataFrame({'data':data,'age':[1,2,3,4])
*注意此处data是前面series创建好的有索引的对象
通过numpy创建
pd.DataFrame(np.random.rand(3,2),
columns=['name','age'],
index=['a','b','c']
)
x.index获取行索引标签,x.columns获取列索引标签
pandas 的index对象
创建对象
ind=pd.Index([2,5,6,7,11])
切片,索引
ind[1],ind[::2]
inda=pd.Index([1,3,5,7,9])
indb=pd.Index([2,3,5,7,11])
交集
inda & indb
并集
inda | indb
异或
inda ^ indb
DataFrame数据选择方法
name = pd.Series({'a':'xi','b':'lin','c':'saber'})
age = pd.Series({'a':18,'b':20,'c':'18'})
data = pd.DataFrame({'name':name,'age':age})
data['name'] 等价于data.name,推荐前者
data.values 查看数组数据
data.values[0] 查看第一行数据
data.T 转置
loc,iloc与series对象中的用法相同
data.loc[:'lin',:'age']
data.iloc[:3,:2]
ix混合使用,不常用
data.ix[:3,:'age']
与掩码和花哨索引结合使用
data.loc[data.age>18,['name','age']]
更新数据
data[0,1]= 20
numpy通用函数pandas也适用
当用两个series对象创建dataframe对象时,会取两个对象的并集,没有的用nan代替
两个dataframe运算时也适用
也可以自定义缺失值
a=pd.DataFrame(np.random.randint(0,20,(2,2)),
columns=list('ab'))
b=pd.DataFrame(np.random.randint(0,10,(3,3)),
columns=list('bca'))
fill = a.stack().mean()
a.add(b,fill_value=fill) a的缺失值用fill填充
缺失值处理:
常用标签nan(not a number)
val = np.array([1,np.nan,3,4])
val.sum,max,min 会将nan的影响算进去
np.nansum(val) ,nanmax,nanmin 忽略nan的影响
data= pd.Series([1,np.nan,'hello',None])
发现缺失值:
data.isnull()
data[data.notnull()]
剔除缺失值:
data.dropna()
df = pd.DataFrame([[1,np.nan,2],
[2,3,5],
[np.nan,4,6]])
df.dropna() 删除含有缺失值的整行数据 ,axis=1或axis='columns' 删除整列数据
df[3] = np.nan
df.dropna(axis='columns',how='all) all表示删除全是缺失值的那行,any表示有缺失值就删除
df.dropna(axis='row',thresh=3) 表示最少含有3个非缺失值的行才会被保留
填充缺失值:
data=pd.Series([1,np.nan,2,None,3],index=list('avcde'))
data.fillna(0) 缺失值用0填充
data.fillna(method='ffill') 用缺失值前面的有效值填充,bfill用后面的有效值填充
data.fillna(method='ffill',axis=1) 每行的前面有效值填充
如果缺失值前面没有值,那么仍然是缺失值
pandas(一)的更多相关文章
- pandas基础-Python3
未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...
- 10 Minutes to pandas
摘要 一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型 十.画图 十一 ...
- 利用Python进行数据分析(15) pandas基础: 字符串操作
字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...
- 利用Python进行数据分析(10) pandas基础: 处理缺失数据
数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 利用Python进行数据分析(9) pandas基础: 汇总统计和计算
pandas 对象拥有一些常用的数学和统计方法. 例如,sum() 方法,进行列小计: sum() 方法传入 axis=1 指定为横向汇总,即行小计: idxmax() 获取最大值对应的索 ...
- 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作
一.reindex() 方法:重新索引 针对 Series 重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- pandas.DataFrame对行和列求和及添加新行和列
导入模块: from pandas import DataFrame import pandas as pd import numpy as np 生成DataFrame数据 df = DataFra ...
- pandas.DataFrame排除特定行
使用Python进行数据分析时,经常要使用到的一个数据结构就是pandas的DataFrame 如果我们想要像Excel的筛选那样,只要其中的一行或某几行,可以使用isin()方法,将需要的行的值以列 ...
随机推荐
- iOS -- Effective Objective-C 阅读笔记 (8)
若想令自己缩写的对象具有拷贝功能, 则需要实现 NSCopying 协议, 如果自定义的对象分为可变版本与不可变版本, 那么就要同时实现 NSCopying 协议和 NSMutableCopying ...
- python第六篇文件处理类型
阅读目录 一 文件操作 二 打开文件的模式 三 操作文件的方法 四 文件内光标移动 五 文件的修改 文件处理 ...
- Python学习笔记二
---恢复内容开始--- 一. python几种数据类型的比较. 从以下几个方面比较: 1. 是否可变. 不可变类型:变量的值可以发生变化,id也变了,相当于创建了一个新的对象,所以一修改值,id就变 ...
- postgre dinstinct on()的使用
意思是DISTINCT ON ( expression [, …] )把记录根据[, …]的值进行分组,分组之后仅返回每一组的第一行. 需要注意的是,如果你不指定ORDER BY子句,返回的第一条的不 ...
- echart 饼状图自定义样式
echarts.init(document.getElementById('WaterCategoryStatistics')).setOption({ legend: { orient:'verti ...
- Codeforces 522D Closest Equals
题解: 傻逼题 直接从左向右扫描每个点作为右端点 然后单点修改区间查询就行了 另外一种更直观的做法就是$(i,j)$之间产生了$(j-i)$ 于是变成矩形查最大值,kd-tree维护 代码: #inc ...
- 修改pip安装源加快python模块安装
用pip安装依赖包时默认访问https://pypi.python.org/simple/,但是经常出现不稳定以及访问速度非常慢的情况,国内厂商提供的pipy镜像目前可用的有: http://pypi ...
- 网络编程-Python高级语法-property属性
知识点: 一.什么是property属性? 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法,Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最 ...
- 自学华为IoT物联网_08 IoT连接管理平台介绍
点击返回自学华为IoT物流网 自学华为IoT物联网_08 IoT连接管理平台介绍 一.IoT连接管理平台的由来 1.1 物联网产业发展面临的挑战 新业务上线周期长,应用碎片化,开发周期长,场频上市慢 ...
- HttpSession与JSESSIONID的"盗用"
https://blog.csdn.net/qq1437715969/article/details/75331652