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. Codeforces 1080C 题解(思维+二维前缀和)

    题面 传送门 题目大意: 有一个黑白的棋盘,现在将棋盘上的一个子矩形全部染成黑色,另一个子矩形全部染成白色 求染完色后黑,白格子的总数 分析 我们可以发现,对于一个(1,1)到(x,y)的矩形,若xy ...

  2. [暑假集训Day2T3]团建活动

    个人认为这周题中较难的一道. 题意大概为:给定一张N个点M条边的无向图,求出无向图的一棵最小生成树,满足一号节点的度数不超过给定的整数K.保证 N <= 20 首先用map存取节点,之后抛去1号 ...

  3. opencv2——直方图5

    (一)图像直方图 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图).所谓直方图就是对图像的中的这些像素点的值进行统计,得到一个统一的整体的灰度概念.直方图的好处就在于可以 ...

  4. CodeChef Sereja and GCD

    Sereja and GCD   Problem code: SEAGCD   Submit All Submissions   All submissions for this problem ar ...

  5. Newtonsoft.Json 转Json字符串为空不序列化

    原文:Newtonsoft.Json 转Json字符串为空不序列化 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...

  6. Js数据去重复,时间更换格式,cookie,localStorage和sessionStorage的使用等通用方法

    一,数组去重复 function unique(arr) { // 遍历arr,把元素分别放入tmp数组(不存在才放) var tmp = new Array(); for (var i in arr ...

  7. UI库colorui的使用————小程序

    UI库colorui的使用----小程序 把colorui文件放到你的小程序中 包含文件: icon.wxss+main.wxss+components(文件夹里有icon和一些组件)+animati ...

  8. ES6——字符串

    1.多了两个方法       1)startsWith       2)endsWith 2.模板字符串(`..`)—— 方便字符串连接   `反单引号        1)可以直接把表达式塞进去 &a ...

  9. 2018-8-10-win10-uwp-MetroLog-入门

    title author date CreateTime categories win10 uwp MetroLog 入门 lindexi 2018-08-10 19:16:53 +0800 2018 ...

  10. Vue:子组件如何跟父组件通信

    我们知道,父组件使用 prop 传递数据给子组件.但子组件怎么跟父组件通信呢?这个时候 Vue 的自定义事件系统就派得上用场了. 使用 v-on 绑定自定义事件 每个 Vue 实例都实现了事件接口,即 ...