Pandas 记录
过滤不为空的数据
df[df['PLANR']=='']
获取某列某行数据(某个单元格数据)
df['MNG02'][0]
根据判断条件筛选数据
df[df['DAT00'] < temp_time]
获取整列数据集合
tmp_df.get('DAT00').unique()
从原来的dataFrame中提取需要的列 组成新的dataFrame
dataFrame[['col1','col2','col3']]
dataFrame进行分组
dataFrame.groupby(['col1','col2','col3']).sum()
重置索引
df.reset_index()
创建新DataFrame
新建一个字典,key作为列名
data = {'Name': ['mark', 'jack', 'james', 'kobe', 'alias'], 'Age': [13, 13, 14, 15, 16],
'Sex': ['F', 'F', 'M', 'M', 'M'],
'Job': ['wait', 'eat', 'computor', 'drink', 'sleep']}
pd.DataFrame(data) df['columnName'] 类型Serials
df[['columnName']] 类型DataFrame
df.shape (行数,列数) 添加新列
1.df['columnName'] = value
2.df.insert(columnIndex, 'columnName', 'value') 设置索引
df.set_index('columnName') 根据索引获取需要的行数据(没有索引获取不到)
df.loc['indexName'] type:Serials
df.loc[['indexName1','indexName2','indexName3']] type:DataFrame 根据行数获取需要的行数据
df.iloc['rowNumber'] type:Serials
df.iloc[['rowNumber1','rowNumber2','rowNumber3']] type:DataFrame 获取指定的行数和列数
df.iloc[:3, :4] 选取前3行和前4列
df.iloc[:, [4,6]] 选取两列的所有的行
df.iloc[[100, 200], [7, 15]] 选取不连续的行和列
df.loc[:, ['columnName1', 'columnName2']] loc实现同上功能 获取df中指定的数据值
df.iloc['rowNumber','colNumber']
df.loc['indexName','columnName'] 根据列名从原始数据集中抽取需要的数据,结果集(行数不变,列数减少)
df[['columnName1','columnName2','columnName3']] 根据bool值进行数据提取,条件必须是bool类型数组,并且数组的大小与行数一致
df[[True,True,False]] :获取前2行
df[df['Age'] == 12] :获取Age为12的行数据
df[(df['Age'] == 12) & (df['Name'] = 'jack')] :根据多个条件获取数据,括号必须,因为&运算符高于逻辑运算符 根据指定列进行排序
df.sort_values('columnName', ascending=False) ascending=False 降序 默认升序 数据去重
df.drop_duplicates(subset='columnName') subset:指定根据某列中的数据去重,默认采用全部数据列
""" """
Serials操作
ss = df['columnName'] 获取df中某一列,返回Serials 获取第几个值
ss.iloc['int']
ss['int'] 获取多个值
ss.iloc[['int1','int2','int3']]
ss[['int1','int2','int3']] loc只接收行索引标签(没有索引获取不到数据)
ss.loc['indexName'] 修改列名
df.rename(columns={'oldColumnName':'newColumnName'})
df.columns = ['newColumnName1', 'newColumnName2', 'newColumnName3'] 分组、聚合的多种方式
df.groupby(['columnName1','columnName2','columnName3']).sum()
df.groupby(['columnName1','columnName2']).agg({'columnName3':['f1','f2'],'columnName4:[f3,f4]'}) :通过2个字段进行分组后,指定columnName3和columnName4进行2种不同聚合函数的计算
df.groupby(['columnName1'])['columnName2','columnName3'].agg(['f1','f2']) 通过一个字段进行分组,指定2个字段进行指定的聚合函数计算 unstack('indexNumber') 行转列 参数 索引的level 比如 第一列索引输入0,第二列索引输入1,若只有2个索引,输入了2,异常,必须是索引列
unstack('indexName') stack('indexNumber') 列转行
stack('indexName') 列转行 pandas合并
数据直接合并,没有任何删减
pd1.concat(pd2) 4. concat, join, 和merge的区别
concat :
Pandas函数
可以垂直和水平地连接两个或多个pandas对象(唯一一个可以垂直合并的函数,append内部采用的也是concat函数)
只用索引对齐
索引出现重复值时会报错
默认是外连接(也可以设为内连接)
join :
DataFrame方法
只能水平连接两个或多个pandas对象
对齐是靠被调用的DataFrame的列索引或行索引和另一个对象的行索引(不能
是列索引)
通过笛卡尔积处理重复的索引值
默认是左连接(也可以设为内连接、外连接和右连接)
merge :
DataFrame方法
只能水平连接两个DataFrame对象
对齐是靠被调用的DataFrame的列或行索引和另一个DataFrame的列或行索引
通过笛卡尔积处理重复的索引值
默认是内连接(也可以设为左连接、外连接、右连接) pandas从数据库获取数据后,会将数据加载到内存,,差不多1g内存100w行数据
pandas到处数据至csv、hdf5,100w行/200M ------------------------------------------------------------------------------------
vaex
vaex的hdf5坑:vaex只支持自身保持的hdf5格式,所以需要使用vaex的hdf5功能,步骤如下:
1.先利用pandas获取需要的dataFrame
2.使用v1=vaex.from_pandas(dataFrame) 将dataFrame转换成vaex支持的dataFrame
3.将获取的数据集导出成vaex本身支持的hdf5 v1.export_hdf5('store.h5')
以上步骤就已经有了vaex本身支持的hdf5文件了,可以大胆的使用vaex来进行快速的数据分析了
加载
df = vaex.open('store.h5') vaex的操作基本都是毫秒级
df的过滤操作
cl_order[(cl_order.ITEM == '1160XW717') & (cl_order.CLOSE_TIME < np.datetime64(datetime(2019,10,2))) & (cl_order.CLOSE_TIME>=np.datetime64(datetime(2019,10,1)))]
vaex如果数据量大,那么在进行groupby的时候,几乎就不会动了 datetime64[ns]转datetime 需要先转到datetime64[s] np.datetime64(x,'s').item().hour x为datetime64[ns]对象,item()后为datetime对象
Pandas 记录的更多相关文章
- pandas记录
pandas的map方法使用 import pandas as pd import numpy as np data = pd.DataFrame(np.random.randint(0, 10, ( ...
- Pandas dataframe 标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- Pandas标记删除重复记录
Pandas提供了duplicated.Index.duplicated.drop_duplicates函数来标记及删除重复记录 duplicated函数用于标记Series中的值.DataFrame ...
- Python pandas 获取Excel重复记录
pip install pandas pip install xlrd 大量记录的时候,用EXCEL排序处理比较费劲,EXCEL程序动不动就无响应了,用pands完美解决. # We will use ...
- #2 numpy pandas初步学习记录
对numpy中的array进行了了解,array方法的取值arr_2d[0:2, 0:2] pandas 1,read_CSV方法 2,head方法 3,loc方法,取值前开后开, 4,replace ...
- Pandas 学习记录(一)
1.DataFrame 按照列和按照行进行索引数据 按照列索引 df[’column_name’] 按照行索引 df.loc[’row_key’] 或 df.iloc[index] 2.先行后列索引单 ...
- 数据清洗记录,pandas
pandas数据清洗:http://www.it165.net/pro/html/201405/14269.html data=pd.Series([1,2,3,4]) data.replace([1 ...
- pandas error记录随笔
1.sys:1: DtypeWarning: Columns (0,1) have mixed types. Specify dtype option on import or 解决办法:PANDAS ...
- pandas删除满足特定列信息的行记录
#!/usr/bin/python import pandas as pd df = pd.read_excel('c:\data\zichan.xlsx') df_sn = pd.read_exce ...
随机推荐
- jupyter快捷键使用
1. 服务启动与停止 环境为windows10系统 ctrl+R输入cmd,输入命令jupyter notebook启动 使用Control-c停止服务 2.常用快捷键 模式切换 当前cell侧边为蓝 ...
- CrystalDecisions.Windows.Forms文件
1.CrystalDecisions.Windows.Forms 相关dll文件 CrystalDecisions.Crystalreports.Engine.dllCrystalDecisions. ...
- [Codechef CHSTR] Chef and String - 后缀数组
[Codechef CHSTR] Chef and String Description 每次询问 \(S\) 的子串中,选出 \(k\) 个相同子串的方案有多少种. Solution 本题要求不是很 ...
- ArcGIS10:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS
[网络转载] 今天将ArcGIS系列的软件从ArcGIS9.3.1升级到ArcGIS10,然后就使用VS创建一个简单的AE应用程序,然后拖放一个toolbar.LicenseControl以及MapC ...
- JQuery-Snowfall降雪插件使用
一个很好使用的降雪插件,可以实现雪花.爱心.图片等下降落. 1.JQuery-Snowfall插件的使用方法: 增加了使用图像作为雪花而不是纯色元素的功能. $(element).snowfa ...
- sql查询 —— 连接查询
-- 执行sql文件 test.sql -- 打开终端 -- cd sql文件所在路径 -- 进入mysql -- use 数据库 -- 执行 source test.sql; -- 自关联 -- 一 ...
- LitElement(六)生命周期
1.概述 基于LitElement的组件通过响应观察到的属性更改而异步更新. 属性更改是分批进行的,如果在请求更新后,更新开始之前,发生更多属性更改,则所有更改都将捕获在同一次更新中. 在较高级别上, ...
- 箭头函数 与 forEach
array.forEach(function(item,index){ }.bind(this)); 同 array.forEach((item,index) =>{ });
- 每天进步一点点------Allegro手工建立电路板
手工建立电路板步骤(以某个四层板为例): (1)file---new---board/board wizard来建立.brd电路板文件.设置名称和保存路径后,要设置绘图区域的大小,setup---dr ...
- rabbitmq 命令行与控制台
命令行和管控台 rabbitmqctl stop_app 关闭应用 rabbitmqctl start_app 打开应用 rabbitmqctl status 节点状态 rabbitmqctl add ...