import pandas as pd
import numpy as np
'''
一.创建df
1.定义df :传递字典
1.1每一列的名称作为键 每个键都有一个数组作为值【key:数组】
1.2 嵌套字典生成df 一级元素的key作为列名 二级元素的key作为行名
1.3选择需要的创建df pd.DataFrame(dict,columns=['key1','key2'])
1.4指定df的标签(index)pd.DataFrame(dict,columns=['key1','key2'],index = ['one','two',`````]) 2.定义df :数据矩阵 + index + columns
2.1 直接传入 值 标签 列名 pd.DataFrame(np.arange(16).reshape(4,4),index=['one','two',....],columns=['object','',..]) 二.选取元素
1.取值
1.1查看 【标签 列名 值 】 frame.index frame.columns frame.values
1.2取一列 frame[['object1','object2']] frame.object
1.3取行 frame[1:3]
1.4取单个值 frame['object'][2] df----Series-----索引取值 2.赋值 2.1 给行列标签命名 frame.index,name = 'id' frame.columns.name = 'item'
2.2 添加一列 frame['new'] = 12 翻译为 frame['new'] = [12,12,12,12]
2.3 修改一列 frame['new'] = Series
2.4 修改单个值 df -- 列series -- 索引 frame['new'][2] = 3 3. 判断元素是否在df中 3.1 df = frame.isin([1.0,'pen']) 4.删除列
4.1 del frame['new'] 5.筛选
5.1 全部筛选 frame[frame<12]
5.2 筛选某一列 frame[frame.new<12] 6.转置
frame.T 三.index对象
1.确定是否有重复索引 serd.index.is_unique frame.index.is_unique
2.对于重复索引 serd['重复索引'] 返回一个Series frame['重复索引'] 返回Frame
3.Series.reindex([索引数组],method='ffill') frame.reindex([索引数组],method='ffill',columns=['','',....]) 4.删除drop() 返回【不包括已删除索引及元素的新对象】 ser.drop(['',''])删除多个索引,要用数组输入
删除行 :Frame.drop(['','',''])
删除列 :Frame.drop(['','',''],axis=1) 5.元素级 数据对其及运算(加) 4.1两个series对象 都有的标签,对应数据相加 只有其中一个对象有的index NaN填充
4.2两个Frame对象 两个frame都有的index 和 columns 对应元素相加 反之用NaN填充 四.数据结构间的运算
1.加减乘除(元素级):【满足广播机制】
a.add(b)
sub()
div()
mul() 五.函数应用和映射【库函数】
1.操作元素的函数(通用函数)
np.sqrt(frame) ##每个元素的平方根
2.按行列操作的函数
f = lambda x:x.max()-x.min()
frame.apply(f) ###按行计算
frame.apply(f,axis=1) ###按列运算 2.1返回多个值
def f(x):
return pd.Series([x.max(),x.min(),],index=['min','max'])
frame.apply(f) 3.统计函数
frame.sum()
frame.mean()
frame.describe() 4.排序 4.1 ser.sort_index()
4.2 ser.sort_index(axis=1)
4.3 frame.sort_index()
4.4 frame.sort_index(axis=1) 4.4 frame.sort_index(by=['columns1','columns2']) 5.排位次 rank ser.rank()
ser.rank(mothod=''first)
ser.rank(ascending=False) 6.相关性corr() 和 协方差 cov() 7.NaN数据
7.1创建np.NaN pd.series([1,2,3,np.NaN,4],index=[' ',' ',.....])
7.2过滤NaN ser.dropna() ser[ser.notnull()] frame.dropna()行或列有一个有NaN都会被直接删除
frame.dropna(how='all')行列所有元素都为NaN时删除
7.3为NaN填充值
frame.fillna(0) 所有NaN填充0
frame.fillna({'ball':1,'mug':0,'pen':99}) 不同列的NaN替换成不同的值 8.等级索引和分级
8.1 等级索引:
mser = pd.Series(np.random.rand(8),index=[['white','white','white','blue','blue','red','red','red'],
['up','down','right','up','down','up','down','left']])
white up 0.322237
down 0.093246
right 0.181997
blue up 0.887448
down 0.032504
red up 0.612139
down 0.125961
left 0.030511
dtype: float64 print(mser['white'])
print(mser[:,'up']) dtype: float64
up 0.256720
down 0.849860
right 0.581021
dtype: float64
white 0.256720
blue 0.412591
red 0.893404
dtype: float64 print('选取特定元素:',mser['white','up'])
选取特定元素: 0.9149258487509073 '''
mser = pd.Series(np.random.rand(8),index=[['white','white','white','blue','blue','red','red','red'],
['up','down','right','up','down','up','down','left']])
print(mser)
print(mser['white'])
print(mser[:,'up'])
print('选取特定元素:',mser['white','up'])
a = mser.unstack()
print('转化成df:\n',a)
'''
转化成df:
down left right up
blue 0.241679 NaN NaN 0.025439
red 0.225099 0.410451 NaN 0.180735
white 0.266825 NaN 0.536098 0.900275
'''
print('df转化成series:\n',a.stack())
'''
df转化成series:
blue down 0.241679
up 0.025439
red down 0.225099
left 0.410451
up 0.180735
white down 0.266825
right 0.536098
up 0.900275
dtype: float64 ''' ###行列都定义等级索引
mframe = pd.DataFrame(np.random.randn(16).reshape(4,4),
index=[['white','white','red','red'],['up','down','up','down']],
columns=[['pen','pen','paper','paper'],[1,2,1,2]])
print(mframe)
'''
pen paper
1 2 1 2
white up 1.729195 -0.451135 -0.497403 -0.938851
down -1.267124 0.422545 0.069564 -0.735792
red up 0.298684 -0.442771 1.301070 0.234371
down 2.266180 -0.549653 0.108434 -0.394364
''' ###重新调整顺序和为层级排序
mframe.columns.names=['object','id'] ##列名加分类名
mframe.index.names=['colors','status'] ##行名加分类名
print(mframe)
'''
object pen paper
id 1 2 1 2
colors status
white up 0.288562 -0.519511 0.516333 0.643500
down 1.759466 -1.194383 -0.624583 1.027694
red up 0.425757 -1.028554 -0.660548 1.074917
down 0.242714 -0.550235 -0.749478 -0.015347 '''
##调整顺序 colors和status列换位置 swaplevel
print(mframe.swaplevel('colors','status'))
'''
object pen paper
id 1 2 1 2
status colors
up white -0.937241 -1.051002 0.621721 1.227554
down white 0.951904 0.585412 -0.315780 -0.336806
up red -1.824083 0.284429 0.310883 0.031538
down red 0.851415 0.598169 1.967784 -0.421712
'''
'

pandas相关操作的更多相关文章

  1. 数据分析06 /pandas高级操作相关案例:人口案例分析、2012美国大选献金项目数据分析

    数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 目录 数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 1. ...

  2. Pandas 常见操作详解

    Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...

  3. 【Python自动化Excel】Python与pandas字符串操作

    Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力. Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便:对于Excel.csv等表格 ...

  4. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  5. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  6. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  7. Liunx下的有关于tomcat的相关操作 && Liunx 常用指令

    先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...

  8. pip的相关操作

    >Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...

  9. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

随机推荐

  1. bfs(双向bfs加三维数组)

    http://acm.hdu.edu.cn/showproblem.php?pid=2612 Find a way Time Limit: 3000/1000 MS (Java/Others)     ...

  2. P2469 [SDOI2010]星际竞速(费用流)

    P2469 [SDOI2010]星际竞速 最小路径覆盖问题 每个星球必须恰好去一次,而每次高速航行都是从一个星球到另一个星球. 那么高速航行的起点可以保证被去过 高速航行和空间跳跃可以是互相独立的 将 ...

  3. grep命令用关系或查询多个字符串

    bcmsh ps | grep -E 'port|ge2 ' bcmsh ps | grep 'port\|ge2 ' 我的目的是筛选出含有 ‘port’ 或者含有 ‘ge2 ’ 的行,上面的第一行参 ...

  4. HR面试总结

    求职面试HR最欣赏的自我介绍 2015-02-25 来源:www.cnrencai.com 浏览:391   明明很有能力的你,在面试中却不能发挥出色?来看看是不是自我介绍环节出了问题. 回答面试题目 ...

  5. 利用delegate来解决类之间相互引用问题(引用死锁)

    类之间相互引用--类A中需要调用类B中的方法,同时,类B中又要调用类A中的方法.(也被称为引用死锁,通常会出现编译错误). 解决方法是,在类A中引用类B,并使类A成为类B的delegate,这样在类A ...

  6. 【记录】使用Navicat将表设计导出数据库设计文档

    INFORMATION_SCHEMA. Tables -- 表信息 INFORMATION_SCHEMA. COLUMNS -- 列信息 参考文章地址:https://blog.csdn.net/cx ...

  7. while例子 求1到100的和

  8. 天启android5.1系统无法在非1650批次号的rk3288w芯片上启动

    天启android5.1系统无法在非1650批次号的rk3288w芯片上启动 挂掉log,说明在rtc初始化后挂掉 [ ) HIGH! ======== [ [ [ 1.420258] [WLAN_R ...

  9. AR/VR增强现实 虚拟现实,嵌入式解决方案探讨

    AR/VR增强现实 虚拟现实,嵌入式解决方案探讨 北京太速科技有限公司 视频增强现实产品与视频矩阵拼接等产品开发,增强现实技术包含了多媒体.三维建模.实时视频显示及控制.多传感器融合.实时跟踪及注册. ...

  10. Tomcat架构与原理

    Tomcat架构与原理 架构图 原理 ①.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得. ②.Connector把该请求交给它所 ...