栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pandas的series技术总结

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pandas的series技术总结

这不是教程,这是个人总结,没有阅读体验。

basic
  1. series可以用list创建,而且series其实就是给ndarray对象加上一层索引。所以在元素替换的时候可以等于list。
  2. 注意:即使指定了索引,仍然可以用0,1,2,3..作为索引获取数据。但是不规范,应该使用loc和iloc.
  3. 注意:切片时不是数字的索引包含结尾。
  4. 指定name便于合并到dataframe
  5. 查看dtype,修改astype
  6. values获取到值。
  7. to_list相对于values/to_numpy的不好之处在于不再能使用numpy的array的方法了.比如s.values.nonzero()查看非零元素。
  8. s.repeat()和s.reset_index和s.index方便构造新的series。
  9. 注意:series只有一列,不像dataframe那样,存在set_index,所以直接设置index即可。
  10. series和dict很像,也有迭代模式。s.items(),s.keys().转为字典用s.to_dict()
  11. 注意s.count()是不把空值计算在内的,查看元素个数s.size,查看非空元素个数s.count()。
  12. 在pandas的函数中要特别注意对空值的处理和是否本地化改变数据。比如groupby就会:
  13.  查看不重复元素及不重复元素个数s.unique(),s.nunique()。
  14. 查看重复元素flag=s.duplicated(keep='first')返回布尔值,s[flag]返回重复值,s.drop_duplicates()返回去除重复值后的元素.
  15. sort_values,sort_index排序
  16. 选择前n个最大的元素和选择前n个最小的元素:nlargest,nsmallest。
分析操作
  1. s.round(2)保留小数,s.quantile([0.25,0.5,0.75,0.8])求百分位数
  2. 两个series之间:s1.corr(s2)求相关性,s1.cov(s2)求协方差。
  3. 和它自己s.diff(2)、s.diff(-2)做差.大于0,当前元素减去上面元素,小于0,减去下面元素。pct_change:垂直方向相减求比例.
  4. s.shift就是平移,大于0,向上平移,小于0,向下平移。仔细看图中nan出现位置:
  5. 分箱技术:pd.cut(dfd['a'],bins=[0,59,79,100],labels=['不及格','不错','优秀'])
  6. cummax:从第一行开始截止当前行的最大值。cummin
  7. cumprod:对每一行实现累乘;cumsum对每一行实现累加。

  • 其中和它自己的还有rolling,rolling可用于series也可用于dataframe:
  1. s.rolling(3).sum();s.rolling(3).agg(lambda x:sum(x))。
  2. 去除计算产生的nan的方法就是“有多少算多少”,s.rolling(3,min_peroids=1).sum()。 
  3. center参数默认为False,rolling从当前元素往上筛选;center=True则以当前元素为中心,从两个方向进行筛选。
  4. pandas本身诞生在金融领域,非常擅长对时间操作。
  5. 创建一个时间序列:amount=pd.series([100,100,100,100],index=pd.DatetimeIndex(["2020-1-1',"2020-1-3","2020-1-4","2020-1-6"])),然后amount.rolling("3D").sum()

  • asfreq!
组合更新
  1. append用于合并两个字段相同的dataframe或则series,但是已经被pd.concat取代了。
  2. pd.concat([df1,df2])用于合并也可用于追加。还可以ex_res.loc[ex_res.size] = ['c1','c2']方式追加。
  3. 两个series计算新series:s1.combine(s2,func=lambda a,b: a if a>b else b),长度不一致也无妨。
  4. s1.update(s2),用s2对应元素替换掉s1,如果s2为空,则保留s1.对s1本身操作,没有返回值。
  5. 其中:s3=s1.combine(s2,func=lambda a,b:a if pd.notna(a) else b),combine有返回值。
  6. 无论update还是combine都以s1为准,类似于sql中left join.
索引
  • series和pandas都是针对索引进行操作。
  • 设置二级以上索引df.set_index(['姓名','科目'])
  • unstack二级索引的series就是把series转化为Dataframe,并且columns和index都有名字,可用rename_axis(columns=None)来重新命名.
  • series中rename,reindex是专用于改变索引的,目前对改变索引没想法。
map/agg/apply/replace
  • map和apply差不多,但是apply只能接受函数(apply可以接受函数的参数)。map可以接受字典。
  • 聚合那么针对的就是数值类型,s.agg(['min','max','mean'])
  • replace通过指定一个字典,将series对象里面的元素进行替换。和map里面指定字典类似。
缺失值和比较
  1. s.fillna(),s.dropna()
  2. s.drop(['a','c'])指定索引删除某些元素
  3. isna,isnull,notna,notnull
  4. isin,between
  5. s.memory_usage
字符串处理 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号