py使用笔记-pandas函数
1,nan替换为0
df = df(np.nan, 0, regex=True)
2.inf替换为0
df= df(np.inf, 0.0, regex=True)
3.从数据库读取数据到dataframe
info_detail = pd.read_sql(sql_detail+"'"+version+"'", pyodbc.connect(CONFIG_IN_LCD))
4.从dataframe中取其中需要的几列
info = info_detail.loc[:,['version','Eventid','sn','NOISECNT','BLOCKMICCNT','HIGHBLOCKMICCNT', 'WINDCNT','HappenTime']]
5.groupby //其他列求和
info_sum_version = audio_info.groupby(['version','EVENTID']).sum().reset_index()
groupby后,添加一列num作为统计值
single = single.groupby(['version','eventId','bsd_grade','projectId','versionId']).size().to_frame(name='num').reset_index()
6.合并 merge,求交集
info_sum_version = pd.mergeinfo_sum_version version_map, how='inner', on='version', indicator=True).drop('_merge', axis=1)
7.dataframe添加一列
audio_info['type'] = 0
8.计算得出某一列的值
audio_info['blockmicrate'] = np.divide(audio_info['BLOCKMICCNT'] * 100.0, audio_info['NOISECNT'] * 1.0)
9.过滤:按照某一列的条件过滤
audio_info = audio_info[audio_info['blockmicrate'] > 50.0]
多个条件过滤,必须同时满足两个条件:
single = audio_info[(audio_info['UBSD_GRADE']==1) & (audio_info['UBSD_PHENOMENON']==1)]
多个条件过滤,只要满足其中一个条件即可:
single = single_position[(single_position['bsd_cause'] ==3)|(single_position['bsd_cause'] ==2)]
10.规范字段
audio_info.columns = ['version','eventId','happenTime','noisecnt','projectId','versionId']
11.判断一个dataframe是否为空
方法一:audio_info.empty
方法二:len(audio_info_sum_version) > 0 //这个方法还可以计算dataframe的行数
12.计算dataframe的行数
single_num = single.iloc[:,0].size
13.创建一个空的dataframe并向dataframe中添加新的列
bsd_version_count = pd.DataFrame({"version":version},index=["0"])
bsd_version_count['type'] = "单通"
14.dataframe求并集
adjust_user.columns = ['md5SN','sn', 'version', 'adjustTimes', 'projectId', 'versionId']
adjust_duration.columns = ['sn', 'version', 'duration', 'projectId', 'versionId']
adjust_user = pd.merge(adjust_duration,adjust_user,how='outer', on=['sn','version','projectId', 'versionId'], indicator=True).drop('_merge', axis=1)
adjust_user = adjust_user.replace(np.nan, 0.0, regex=True)
合并后把nan设置为0
15.dataframe行拼接
userInfo_max = userInfo[np.divide(userInfo['adjustTimes']*3600*1000.0,userInfo['duration']*1.0) <0.1].groupby(['version']).size().to_frame(name='userNum').reset_index()
userInfo_max.insert(1, 'FEATURE_MARKER', 1) # 加入 defect type
userInfo_mid = userInfo[np.logical_and(np.divide(userInfo['adjustTimes']*3600*1000.0,userInfo['duration']*1.0) >= 0.1, np.divide(userInfo['adjustTimes']*3600*1000.0,userInfo['duration']*1.0) < 0.3 )].groupby(['version']).size().to_frame(name='userNum').reset_index()
userInfo_mid.insert(1, 'FEATURE_MARKER', 2) # 加入 defect type
userInfo_min = userInfo[np.divide(userInfo['adjustTimes']*3600*1000.0,userInfo['duration']*1.0) >= 0.3].groupby(['version']).size().to_frame(name='userNum').reset_index()
userInfo_min.insert(1, 'FEATURE_MARKER', 3) # 加入 defect type
# 用户对焦情况信息(按区间)
userInfo_adjust = userInfo_max
if (len(userInfo_mid) > 0):
userInfo_adjust = userInfo_adjust.append(userInfo_mid)
if (len(userInfo_min) > 0):
userInfo_adjust = userInfo_adjust.append(userInfo_min)
userInfo_adjust['FEATURE'] = 'LCD'
userInfo_adjust['DEFECT_TYPE'] = 'LIGHTADJUST'
16.处理dataframe中某一列的数据
com.tencent.mobileqq#10000 转成 com.tencent.mobileqq
version_app_info['HEATINGAPP__FORENAME__NAME'] = version_app_info['HEATINGAPP__FORENAME__NAME'].apply(lambda x :x.split('#')[:1][0])
17.
-----------------------------------------------------------------------------------------------------------
函数:
一.import sqlalchemy as sa 相当于ORM框架
1.初始化数据库连接:
engine = sa.create_engine("mssql+pyodbc://?driver=SQL+Server+Native+Client+10.0")
2.使用连接:向数据库插入数据,删除数据
二.import pandas as pd 数据处理
1.生成数据表
version_map = pd.read_sql(getSysVersionInfo(version), pyodbc.connect(CONFIG_IFOCUS54_NEW))
2.数据表信息查看
维度查看: df.shape
数据表基本信息:df.info()
查看列名称:df.columns
查看前10行,后10行数据:df.head() df.tail()
3.数据表清洗
用数字0填充空值 : df.fillna(value = 0)
清除city字段的空字符空格 :df['city'] = df['city'].map(str.strip)
大小写转换:df['city'] = df['city'].str.lower()
某一列的均值: df['price'].mean()
更改列名:df.rename(columns = {'name':'newName'})
4.数据预处理:
数据表合并--交集:df_inner = pd.merge(df,df1,how='inner',on=['version']).drop('_merge', axis=1)
数据表合并--交集:df_outer = pd.merge(df,df1,how='outer',on=['version'],indicator=True).drop('_merge', axis=1)
设置索引列:df.set_index('id')
排序--按照某一列排序:df.sort_values(by=['age'])
排序--按照索引列排序:df.sort_index()
5.数据提取
loc函数按标签值进行提取,iloc按位置进行提取,ix可以同时按标签和位置进行提取
按索引提取单行的数值--- df.loc[3]
按索引提取区域行数值--- df.iloc[0:5]
提取某几列的值----- df = df.loc[:,['version', 'sn', 'app', 'endLevel', 'startLevel', 'lightLux']]
6.数据筛选
使用与、或、非三个条件配合大于、小于、等于对数据进行筛选,并进行计数和求和
df_new = df[(df['UBSD_GRADE']==1) & (df['UBSD_PHENOMENON']==2)]
df_new = df[(df['UBSD_POSITION']==4) | (df['UBSD_POSITION']==7) | (df['UBSD_POSITION']==8)]
df = df[df['BLOCKMICCNT'] > 3]
7.数据汇总:
df= df1.groupby(['version','eventid']).sum().reset_index()
8.数据输出
保存到数据库:df.to_sql(name= 't_btm20_dmd_adjust_detail', con=engine, if_exists='append', index=False)
保存到excel: df.to_csv('focus_detail.csv')
三.import numpy as np python数值计算库
两列相除:df['blockmicrate'] = np.divide(df['BLOCKMICCNT'] * 100.0, df['NOISECNT'] * 1.0)
四.pyodbc
py使用笔记-pandas函数的更多相关文章
- Python:笔记(2)——函数与模块
Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...
- Matlab学习笔记 figure函数
Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...
- matlab学习笔记 bsxfun函数
matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...
- matlab学习笔记13_1 函数返回值
一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...
- 第2章KNN算法笔记_函数classify0
<机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...
- pandas函数应用
1.管道函数 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang cha ...
- Py修行路 Pandas 模块基本用法
pandas 安装方法:pip3 install pandas pandas是一个强大的Python数据分析的工具包,它是基于NumPy构建的模块. pandas的主要功能: 具备对其功能的数据结构D ...
- swift学习笔记2——函数、闭包
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- 阅读{django-restframework}源码[generics.py]学习笔记
首先django-restframework是基于django的一个框架. mixins.py中开头是这样写的: Basic building blocks for generic class b ...
随机推荐
- Linux实时查询GPU使用命令
查看显存使用情况的命令: $ nvidia-smi 周期性地查看GPU使用情况则使用命令: $ watch -n nvidia-smi 其中数字10表示每十秒刷新一次GPU使用状态. 具体如下所示:重 ...
- stored information about method csdn
Eclipse编译时保留方法的形参 Window -> Preferences -> Java -> Compiler. 选中Store information about meth ...
- CF917D Stranger Trees
CF917D Stranger Trees 题目描述 给定一个树,对于每个\(k=0,1\cdots n-1\),问有多少个生成树与给定树有\(k\)条边重合. 矩阵树定理+高斯消元 我们答案为\(f ...
- WPFのDecorator 、Adorner和AdornerDecorator
Decorator 和 Adorner 它们都有“装饰品”的意思. Decorator类负责包装某个UI元素,以提供额外的行为.它有一个类型为UIElement的Child属性,其中含有待包装的内容. ...
- CAS跳转流程
场景一: 用户先访问广告合同管理系统ADM,去投放广告,之后又去资产系统AMS,查看资产信息. 访问ADM时,用户需要先去CAS登录,之后访问AMS时 1.访问广告合同管理系统ADM: 2.访问AMS ...
- [TJOI2018]碱基序列
嘟嘟嘟 现在看到字符串就想到SAM,所以很担心kmp啥的会不会忘了-- 这题感觉挺暴力的:首先当然要把\(s\)建成SAM,然后令\(dp[i][j]\)表示到第\(i\)组时,SAM上节点\(j\) ...
- 深入学习Redis:Redis内存模型
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计 ...
- PHP设计模式_工厂模式
个人理解工厂类相当于平时用的基类,只需要把类new一次然后付给一个变量,以后直接引入基类调用变量使用类里的方法即可 了解 工厂模式,工厂方法或者类生成对象,而不是在代码中直接new. 使用工厂模式,可 ...
- Linux:Day4(下) 用户及组管理
Linux用户:Username/UID 管理员:root,0 普通用户: 1-65535 系统用户:1-499 对守护进程获取资源进行权限分配: 登陆用户:500+ 交互式登录: Linux组:Gr ...
- 【window】Windows10下为PHP安装redis扩展
操作: 步骤1:D:\wamp\bin\apache\apache2.4.9\bin/php.ini中添加 ; php_redis extension=php_igbinary.dll extensi ...