pandas相关操作
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相关操作的更多相关文章
- 数据分析06 /pandas高级操作相关案例:人口案例分析、2012美国大选献金项目数据分析
数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 目录 数据分析06 /pandas高级操作相关案例:人口案例分析.2012美国大选献金项目数据分析 1. ...
- Pandas 常见操作详解
Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...
- 【Python自动化Excel】Python与pandas字符串操作
Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力. Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便:对于Excel.csv等表格 ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 理解CSV文件以及ABAP中的相关操作
在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...
- Liunx下的有关于tomcat的相关操作 && Liunx 常用指令
先记录以下liunx下的有关于tomcat的相关操作 查看tomcat进程: ps-ef|grep java (回车) 停止tomcat进程: kill -9 PID (进程号如77447) (回车) ...
- pip的相关操作
>Python中的pip是什么?能够做些什么? pip是Python中的一个进行包管理的东西,能够下载包.安装包.卸载包......一些列操作 >怎么查看pip的相关信息 在控制台输入: ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
随机推荐
- CentOS7安装MySQL5.7.20
参考1:https://www.cnblogs.com/technology-huangyan/p/10484838.html 参考1:https://blog.csdn.net/aiyowei110 ...
- .ef core 多对对关系的关联方法
最近在用.net core 重构博客,在使用ef core连表查询时,遇到了一些问题.记录一下. 关系:一个博客可以有多个标签,一个标签可以属于多个博客,博客和标签之间存在多对多的关系 下面是实体代码 ...
- python类中方法__str__()和__repr__()简单粗暴总结
在交互式模式下,类中同时实现__str__()和__repr__()方法: 直接输入实例名称显示repr返回的类容: 用print打印实例名称显示str返回的内容: >>> clas ...
- C# List和DataTable的相互转换
1.List转DataTable /// <summary> /// list to datatable /// </summary> /// <typeparam na ...
- mongodb使用简介
mongodb简介 在使用nodejs时候,需要存储一些简单json数据的情况下,很多人会推荐使用mongodb.mongodb是一个文档型数据库,在 sql 中,数据层级是:数据库(db) -> ...
- python py文件转换成exe
1.首先学会了最简单的方法 1)pip install pyinstaller 安装pyinstall 2)pyinstaller aaaa.py 转换,会在当前目录下建两个文件夹,其中一个文件夹 ...
- 简单使用vuex状态管理
1.在使用vue-cli脚手架创建项目后 npm install vuex 2.创建store文件夹,结构如下: 3.store中 index.js代码如下: 4.入口文件main.js中引入stor ...
- nyoj 600:花儿朵朵(树状数组+坐标离散化)
http://acm.nyist.net/JudgeOnline/problem.php?pid=600 只附代码好了 #include<bits/stdc++.h> using name ...
- Setting proxy for Windows CMD and Linux Terminal
setting proxy for Windows CMD and Linux Terminal Linux Terminal: set http_proxy=http://127.0.0.1:811 ...
- 数据流:DataOutputStream与DataInputStream的使用
看这两个类的名字就不难猜测出它们的类关系图. DataOutputStream: 主要是一些writeXxx()操作,写出, 相当于序列化 DataInputStream: 主要是一些readXxx( ...