文档章节

5-pandas基础运算

eddy_linux
 eddy_linux
发布于 2017/09/04 13:48
字数 1131
阅读 6
收藏 0
点赞 0
评论 0
#encoding:utf8

import pandas as pd
import numpy as np


s = pd.Series([1,2,3,4,5],index=list('acefh'))
print(s)
'''
a    1
c    2
e    3
f    4
h    5
'''
print(s.index)
'''
Index(['a', 'c', 'e', 'f', 'h'], dtype='object')
'''
#重新索引并对Nan值赋值为0
print(s.reindex(list('abcdefgh'),fill_value=0))
'''
a    1
b    0
c    2
d    0
e    3
f    4
g    0
h    5
'''
#把Nan赋值为上一个非Nan的值(类比股票停盘的时候把停盘的值赋值为停盘之前的值)
print(s.reindex(list('abcdefgh')))
#method:bfill是把下一个的非Nan值赋值到Nan中
print(s.reindex(list('abcdefgh'),method='ffill'))
'''
a    1.0
b    NaN
c    2.0
d    NaN
e    3.0
f    4.0
g    NaN
h    5.0
dtype: float64
a    1
b    1
c    2
d    2
e    3
f    4
g    4
h    5
'''

df = pd.DataFrame(np.random.randn(4,6),index=list('ADFH'),columns=['one','two','three','four','five','six'])
print(df)
'''
        one       two     three      four      five       six
A  0.352770  0.302011  0.375550  1.804725 -0.494243 -0.467798
D -0.246352 -1.346173 -0.194345 -0.050121 -1.695538 -0.666932
F -1.134675  0.889683  0.603448  2.041425 -0.537469 -0.551439
H  1.916636  0.433567  1.072732 -1.391239  0.732202 -0.829673
'''
#二维数组重索引行,填充Nan值
df2 = df.reindex(index=list('ABCDEFGH'),fill_value=0)
print(df2)
'''
        one       two     three      four      five       six
A  0.617191  0.687148  1.274273 -0.839415  0.792152 -0.536064
B       NaN       NaN       NaN       NaN       NaN       NaN
C       NaN       NaN       NaN       NaN       NaN       NaN
D -0.730075 -0.286531 -1.884375  1.139414 -0.169306  0.217407
E       NaN       NaN       NaN       NaN       NaN       NaN
F  1.132639  0.130489  0.894960  0.700022  0.825214 -1.424234
G       NaN       NaN       NaN       NaN       NaN       NaN
H -0.197997  1.464797 -0.733199 -0.366465 -0.709581  0.780381

        one       two     three      four      five       six
A -0.741244  2.237643  0.596041 -1.825212  1.535922 -1.279042
B  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000
C  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000
D  0.799521  0.453463  0.935007  0.469048 -1.783111 -0.145021
E  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000
F  0.355039 -0.500475 -0.444605 -0.559341  0.031650  1.377536
G  0.000000  0.000000  0.000000  0.000000  0.000000  0.000000
H -0.363621  0.510240  0.088605 -1.108609 -0.799488  0.681844
'''

#二维数据列重索引
print(df.reindex(columns=['one','two','three','four','five','six','seven'],fill_value=0))
'''
        one       two     three      four      five       six  seven
A  0.886400 -0.423722 -0.236410 -2.955891  1.138746  0.617567    NaN
D  0.604896  0.496586 -0.209181 -1.913454  0.022793 -2.085502    NaN
F  1.120339 -0.510216 -2.438642 -0.648351 -0.047299 -0.569957    NaN
H  1.390851 -0.539437 -0.378924 -0.976334  2.274232  0.002144    NaN

        one       two     three      four      five       six  seven
A -1.548185 -0.310676 -0.441914  0.576015  0.969689 -0.450120      0
D  0.247333 -0.559566 -0.352404  0.235390 -0.078221  0.990842      0
F -0.582162  0.672071  0.582770  0.761390 -0.039544 -0.411953      0
H  1.799309  0.494148  0.847326 -0.958537 -2.313566 -0.286750      0
另外method方法只对行有效,列无效的
'''
#取消显示某行某列
#但原数据不变
print(df.drop('A'))
#axis:0默认为行,axis:1为列
print(df.drop(['one','two'],axis=1))
print(df)
'''
        one       two     three      four      five       six
D  0.595548 -1.324211 -1.654202 -0.661661  0.461671  1.273477
F  0.045223  0.951209  0.654337 -0.530489  1.707179  0.973863
H  0.808623  0.627833  1.630329  0.287034  0.143080 -0.406583
      three      four      five       six
A  2.154951  0.848024  1.028920  0.753677
D -1.654202 -0.661661  0.461671  1.273477
F  0.654337 -0.530489  1.707179  0.973863
H  1.630329  0.287034  0.143080 -0.406583
        one       two     three      four      five       six
A  1.413738  0.819763  2.154951  0.848024  1.028920  0.753677
D  0.595548 -1.324211 -1.654202 -0.661661  0.461671  1.273477
F  0.045223  0.951209  0.654337 -0.530489  1.707179  0.973863
H  0.808623  0.627833  1.630329  0.287034  0.143080 -0.406583
'''

df = pd.DataFrame(np.arange(12).reshape(4,3),index=['one','two','three','four'],columns=list('ABC'))
print(df)
'''
       A   B   C
one    0   1   2
two    3   4   5
three  6   7   8
four   9  10  11
'''

#按列进行运算
print(df.apply(lambda x: x.max() - x.min()))
'''
A    9
B    9
C    9
'''
#按行进行运算
#axis:0为列默认,axis:1为行
print(df.apply(lambda x: x.max() - x.min(),axis=1))
'''
one      2
two      2
three    2
four     2
'''
#查看帮助
help(df.apply)
'''
    axis : {0 or 'index', 1 or 'columns'}, default 0
        * 0 or 'index': apply function to each column
        * 1 or 'columns': apply function to each row
'''

#apply中可以传入更复杂的函数而不是lambda这样的匿名函数
def min_max(x):
    return pd.Series([x.min(),x.max()],index=['min','max'])
print(df.apply(min_max))
'''
    A   B   C
min  0   1   2
max  9  10  11
'''
print(df.apply(min_max,axis=1))
'''
       min  max
one      0    2
two      3    5
three    6    8
four     9   11
'''

#对dataframe中的小数取位数
df = pd.DataFrame(np.random.randn(4,3),index=['one','two','three','four'],columns=list('ABC'))
print(df)
'''
              A         B         C
one   -0.163500  1.513105  0.620532
two   -0.372754  1.180852 -0.013991
three -1.065681  0.286195 -1.399696
four   1.042050 -0.251143 -1.671825
'''
formater = lambda x: '%.03f' %x
print(df.applymap(formater))
'''
            A       B       C
one     0.030  -0.223  -0.038
two    -0.358  -0.020   0.557
three   0.820  -0.646   0.296
four    0.273   0.765   0.625
'''
#排序
df = pd.DataFrame(np.random.randint(1,10,(4,3)),columns=['one','two','three'],index=list('ABCD'))
print(df.sort_values(by='one',ascending=False))
'''
   one  two  three
C    1    4      1
A    2    7      1
D    6    7      1
B    7    5      9

   one  two  three
B    8    4      5
C    8    1      8
D    3    4      6
A    2    2      2

'''
#元素的排名
s = pd.Series([3,6,2,6,4])
print(s.rank(method='first'))
'''
0    2.0
1    4.5
2    1.0
3    4.5
4    3.0

0    2.0
1    4.0
2    1.0
3    5.0
4    3.0
先出现的排名较高,默认是method=average
'''
print(df)
print(df.rank(method='first'))
'''
   one  two  three
A    7    1      4
B    5    2      8
C    4    3      9
D    9    6      5
   one  two  three
A  3.0  1.0    1.0
B  2.0  2.0    3.0
C  1.0  3.0    4.0
D  4.0  4.0    2.0

'''
s = pd.Series(list('aaaabbbdbdbdbdjdjkfk'))
print(s.value_counts())
'''
b    6
d    5
a    4
k    2
j    2
f    1
'''
print(s.unique())
'''
['a' 'b' 'd' 'j' 'k' 'f']
获取不重复的元素列表
'''
#判断是否是里面的值
print(s.isin(['a','c','k']))
'''
0      True
1      True
2      True
3      True
4     False
5     False
6     False
7     False
8     False
9     False
10    False
11    False
12    False
13    False
14    False
15    False
16    False
17     True
18    False
19     True
'''
print(s.isin(s.unique()))
'''
0     True
1     True
2     True
3     True
4     True
5     True
6     True
7     True
8     True
9     True
10    True
11    True
12    True
13    True
14    True
15    True
16    True
17    True
18    True
19    True
'''

 

© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 18
博文 135
码字总数 188789
作品 0
成都
程序员
Pandas模块入门(一)——Series结构介绍

Pandas模块是Python用于数据导入及整理的模块,对数据挖掘前期数据的处理工作十分有用,因此这些基础的东西还是要好好的学学。 Pandas模块的数据结构主要有两:1、Series ;2、DataFrame 这次...

qq_36332685 ⋅ 2017/12/13 ⋅ 0

机器学习|砖家必备的15张速查表

封面.jpg 图片来源: https://github.com/kailashahirwar/cheatsheets-ai 1.Numpy Numpy (Numerical Python)是高性能计算和数据分析的基础包。它以多维数组为基础,包含了丰富的函数库,能够...

最会设计的科研狗 ⋅ 2017/06/25 ⋅ 0

Python+pandas+matplotlib数据分析与可视化案例(附源码)

问题描述:运行下面的程序,在当前文件夹中生成饭店营业额模拟数据文件data.csv 然后完成下面的任务: 1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值; ...

oh5w6hinug43jvrhhb ⋅ 2017/12/12 ⋅ 0

python及numpy,pandas易混淆的点

LeadAI学院祝您圣诞节快乐 正文共1849个字,5张图,预计阅读时间5分钟。 初接触python觉得及其友好(类似matlab),尤其是一些令人拍案叫绝不可思议的简单命令就可以完成非常复杂的计算,但是...

leadai ⋅ 2017/12/25 ⋅ 0

10分钟入门Pandas

参考: 10 Minutes to pandas 安装 支持的python版本: 2.7, 3.5, 3.6 检查本地的pandas运行环境是否完整,可以运行pandas的单元测试用例 获取当前使用pandas的版本信息 概览 pandas的基本数据...

宁静的夜 ⋅ 2017/12/20 ⋅ 0

python之pandas的基本使用(1)

一、pandas概述 pandas :pannel data analysis(面板数据分析)。pandas是基于numpy构建的,为时间序列分析提供了很好的支持。pandas中有两个主要的数据结构,一个是Series,另一个是DataF...

cxmscb ⋅ 2017/01/20 ⋅ 0

Python+pandas实现时间序列数据扩展案例一则

感谢山东科技大学李超老师提供应用背景。 在分析时序数据的有些场合下,可能每个月只能拿到一个数据,然而实际处理时,需要把这个数据扩展到该月的每天,且每天的数据相同。 演示代码: 某次...

oh5w6hinug43jvrhhb ⋅ 2017/12/16 ⋅ 0

Python 数据分析包:pandas 基础

pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包 类似于 Numpy 的核心是 ndarray,pandas 也是围绕着 Series 和 DataFrame 两个核心数据结构展开的 。Series 和 DataFrame ...

lionets ⋅ 2014/06/10 ⋅ 5

Python - 七种武器之NumPy

Python是一个优秀的通用性编程语言,站在AI的风口,光芒四射,更是借助开源流行库(NumPy, SciPy, Matplotlib, Pandas等),成为强大的科学计算,机器学习首选环境。我们今天也来学习一下其七...

erixhao ⋅ 2017/10/20 ⋅ 0

pandas 时间序列操作

数据类型及操作 --- Python 标准库的 datetime datetime 模块中的 datetime、 time、 calendar 等类都可以用来存储时间类型以及进行一些转换和运算操作。 lang:python >> from datetime imp...

lionets ⋅ 2014/06/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 18分钟前 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 33分钟前 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 42分钟前 ⋅ 0

vim编辑模式、vim命令模式、vim实践

vim编辑模式 编辑模式用来输入或修改文本内容,编辑模式除了Esc外其他键几乎都是输入 如何进入编辑模式 一般模式输入以下按键,均可进入编辑模式,左下角提示 insert(中文为插入) 字样 i ...

蛋黄Yolks ⋅ 46分钟前 ⋅ 0

大数据入门基础:SSH介绍

什么是ssh 简单说,SSH是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码...

董黎明 ⋅ 今天 ⋅ 0

web3j教程

web3j是一个轻量级、高度模块化、响应式、类型安全的Java和Android类库提供丰富API,用于处理以太坊智能合约及与以太坊网络上的客户端(节点)进行集成。 汇智网最新发布的web3j教程,详细讲解...

汇智网教程 ⋅ 今天 ⋅ 0

谷歌:安全问题机制并不如你想象中安全

腾讯科技讯 5月25日,如今的你或许已经对许多网站所使用的“安全问题机制”习以为常了,但你真的认为包括“你第一个宠物的名字是什么?”这些问题能够保障你的帐户安全吗? 根据谷歌(微博)安...

问题终结者 ⋅ 今天 ⋅ 0

聊聊spring cloud gateway的RedisRateLimiter

序 本文主要研究下spring cloud gateway的RedisRateLimiter GatewayRedisAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springframework/cloud/gateway/con......

go4it ⋅ 今天 ⋅ 0

169. Majority Element - LeetCode

Question 169. Majority Element Solution 思路:构造一个map存储每个数字出现的次数,然后遍历map返回出现次数大于数组一半的数字. 还有一种思路是:对这个数组排序,次数超过n/2的元素必然在中...

yysue ⋅ 今天 ⋅ 0

NFS

14.1 NFS介绍 NFS是Network File System的缩写 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本 NFS数据传输基于RPC协议,RPC...

派派菠菜 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部