Python笔记8----DataFrame(二维)
目录:
- apply
- memory_usage
- pivot_table
1、DataFrame概念
Series对应的是一维序列,而DataFrame对应的是二维表结构(表格型的数据结构)
DataFrame可以看成共享同一个索引index的Series集合。
2、DataFrame创建
DataFrame对象可以由列表、元祖、字典创建,然后通过DataFrame函数创建,如:name和pay为列索引,行索引用默认的0,1,2
由字典创建:
用列表创建:然后通过DataFrame创建,index作为行索引,columns作为列索引。
3、基本操作:
- 查看dataframe的行索引:dataframe.index
- 查看dataframe的列索引:dataframe.columns
- 查看dataframe的值:dataframe.values 【值的类型为numpy.narray】
- 通过dataframe['列名'] 来查看值 , 【值的类型为series】
- 查看dataframe单值索引:dataframe['列名']['行名'](注意先列后行)
用循环输出所有的值:
for i in dataframe.columns:
for j in dataframe.index:
print(dataframe[i][j])
- 查看dataframe的前n行:dataframe.head(n)
- 查看dataframe的后n行:dataframe.tail(n)
- 查看dataframe的数据描述:dataframe.describe【得到的结果为count、mean、std、min、25%、50%、75%、max】
- 查看dataframe的维度:dataframe.shape
- 查看dataframe的数据总个数:dataframe.size
- 查看dataframe的区域数据:dataframe.loc[行标签,[ 列标签 ] ] 函数 和 dataframe.iloc[ 行标签物理位置,[ 列标签物理位置 ] ]
(参照以下这张图)
切片行索引:dataframe.loc['2017-07-03':'2017-07-06'],只输出从3号到6号的值。
dataframe.iloc[2:6]
进行列索引:dataframe.loc['2017-07-03':'2017-07-06',['value','code']]
dataframe.iloc[2:6,[0,1]]
- 查看dataframe的单个值:dataframe.at[行标签,列标签]
- 查看dataframe多个值:dataframe.ix[1:3,1:3]或者dataframe['a':'c','B':'D']即ix既可以通过属性来查看又可以通过行列数来查看。
- 修改dataframe的某个列名:dataframe.rename( columns={ '要修改的名称' : '改后的名称' },inspace=True)
- 提取dataframe的某一些特定行:isin
# 筛选p1列中值为'SD'和'HN'的行:df [ df.p1.isin ( ['SD','HN'] ) ]
- 不在里面:前面加一个~
# ~df [ df.p1.isin ( ['SD','HN'] ) ]
- pandas.DataFrame排除特定行:
#删除p1列中值为'SD'和'HN'的行
将p1转换为列表,再从列表中移除特定的行:
ex_list = list(df.p1)
ex_list.remove('SD')
ex_list.remove('HN')
df[df.p1.isin(ex_list)]
条件筛选功能:
简单统计功能:
(求均值)dataframe[ 行标签或者列标签 ].mean()
(求最大值)dataframe[ 行标签或者列标签 ].max()
(求和)sum ( dataframe [ 行标签或者列标签 ] )
(排序):按照行索引排序,按照值排序等:dataframe.sort_index、dataframe.sort_values(by='标签') 【还有一些参数,比如ascending=False逆序排序】
(分组):dataframe.groupby('标签') 【https://blog.csdn.net/youngbit007/article/details/54288603】
属性:as_index、axis、sort、
dataframe.groupby( ['标签1','标签2'] , as_index = False ),就是不将['标签1','标签2']作为index,默认是True。
axis = 1
level:
函数:sum()、agg()、count()、mean()
af.groupby(['name','course'])['score'].sum()#先将af按照name进行分组,再按照course进行分组,最后将score进行sum。
(合并):①append②concat③merge
append是追加
concat是将多个相同的dataframe合并,不用考虑有没有相同的字段。
merge类似数据库中的join,需要有相同的字段来合并。
pd.merge(dataframe1,dataframe2,on='相同的标签' )【可以完成sql中很多连接的工作】
https://www.cnblogs.com/guxh/p/9451532.html
(转置):dataframe.T
(去重):dataframe = dataframe.drop_duplicates():返回了一个移除重复值的dataframe。
dataframe = dataframe.drop_duplicates( [ 'A' ]) :希望对A这一列重复的值删除。
4、例子:
创建一个DataFrame:
import numpy as np
import pandas as pd
dates=pd.date_range('2017-07-01',periods=7)
col=['value']
data=[]
for i in range(1,8):
data.append(i)
frame=pd.DataFrame(data,index=dates,columns=col)
print(frame) frame['code']=['a','b','c','d','e','f','g']
frame['day']=frame.index.day#将行索引的日期拆成一列加入到dataframe中
frame['day'].value_counts()
5、一些常用的函数
(1)删除缺失值:dropna(axis=0,subset=['Age','Sex']:意思是将属性Age或者Sex为空的列删除。
(2)数据透视表:df.pivot_table(index= ,value=,aggfunc=):index是按照该属性为基准,value是要作用的值,aggfunc是进行什么函数操作,如:
df.pivot_table(index="Pclass", values="Survived", aggfunc=np.mean):以Pclass为分组,对Survived进行均值操作。
(3)df.sort_values(属性名,ascending=False):对df将按属性升值来排序。
(4)apply函数:df.apply(自定义的函数名),想运用自定义的函数对df进行操作。
(5)memory_usage:返回每一列所占的内存大小。
Python笔记8----DataFrame(二维)的更多相关文章
- Python笔记25-----------创建二维列表【浅copy】和转置
一.创建二维列表 1.二维列表创建第二维的时候,如果采用*2这种方式,这是一种浅复制的方式,同时引用到同一个list,如上图的C. 这种形式,不方便修改C[ i ][ j ]的数据,如果改C[ 0 ] ...
- python笔记 利用python 自动生成条形码 二维码
1. ean13标准条形码 from pystrich.ean13 import EAN13Encoder encode = EAN13Encoder(') encode.save('d:/barco ...
- Python将文本生成二维码
#coding:utf-8 ''' Python生成二维码 v1.0 主要将文本生成二维码图片 测试一:将文本生成白底黑字的二维码图片 测试二:将文本生成带logo的二维码图片 ''' __autho ...
- Python使用QRCode生成二维码
PIL和QRCode下载地址: http://www.pythonware.com/products/pil/ https://pypi.python.org/pypi/qrcode/5.1 #你可能 ...
- python库myqr生成二维码
python中有一个好玩的库,不仅可以生成各种花色的二维码,还可以生成动态二维码. MyQR是一个能够生成自定义二维码的第三方库,可以根据需要生成普通二维码.带图片的艺术二维码,也可以生成动态二维码 ...
- Python 实现扫码二维码登录
最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式.当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些. 要实现扫码登录我们需要 ...
- 使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
- python生成动态个性二维码
1 安装工具2 生成普通二维码3 带图片的二维码4 动态 GIF 二维码5 在Python程序中使用 一.安装 首先在python环境下运行, 打开cmd进入python27 进入scripts 然后 ...
- python与php生成二维码对比
php生成二维码 include 引入的库单独下载 <?php header("Content-type:text/html;charset=utf-8"); error_r ...
随机推荐
- sikuli+eclipse实例
设置sikuli环境变量 如果在执行脚本的时候出现以下错误: Getting the VisionProxy.dll: Can not find dependent libraries... 把Sik ...
- sikuli_ide打开提示没有对应的javaw
对于sikuli,需要安装32位的jdk且不能高于1.7的版本 对于64位系统的C盘,Program Files文件夹是64位的,Program File(x86)文件夹是32位的 需要安装一个32位 ...
- 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知
因为业务须要.我们须要使用支付宝移动快捷支付做收款.支付宝给了我们<移动快捷支付应用集成接入包支付接口>见支付宝包<WS_SECURE_PAY_SDK>. 支付宝给的serve ...
- Activiti的简单入门样例(经典的请假样例)
经典的请假样例: 流程例如以下,首先须要部门经理审批.假设请假天数大于2天,则须要总经理审批,否则HR审批就可以 一:创建maven项目,项目结构例如以下: watermark/2/text/aHR0 ...
- 能够替代浮动的inline-block
浮动有个缺点:脱离了原来的文档流,导致父容器无高度.使用inline-block不会脱离文档流.且无忘记清空浮动的困扰 并排的div都设置position:inline-block,vertical- ...
- luogu1082 同余方程
题目大意:求$$ax\equiv 1(\ \mathrm{mod}\ m)$$的最小正整数解. 因为$ax-1|m$,故令$ax-1=-ym$,原方程就变成了$ax+my=1$.根据bezout定理此 ...
- EM算法——有隐含变量时,极大似然用梯度法搞不定只好来猜隐含变量期望值求max值了
摘自:https://www.zhihu.com/question/27976634 简单说一下为什么要用EM算法 现在一个班里有50个男生,50个女生,且男生站左,女生站右.我们假定男生的身高服从正 ...
- hdoj--1864--最大保险额(背包)
最大报销额 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 通过top 5等待事件查看sql语句
设计的动态性能视图有:v$session_event,v$session,v$sqlarea,首先在v$session_event中可以找到event,然后通过其动态性能视图找到sid,可以在v$se ...
- javascript定义类或对象的方式
本文介绍的几种定义类或对象的方式中,目前使用最广泛的是:混合的构造函数/原型方式.动态原型方式.不要单独使用经典的构造函数或原型方式. 工厂方式 构造器函数 原型方式 混合的构造函数/原型方式 动态原 ...