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 ...
随机推荐
- VMware 15 pro虚拟机
VMware虚拟机都到VMware Workstation 15 Pro,真快,VMware 14还没用好
- Lua5.1 升级 Lua5.3 升级 小结
Lua的版本差异确实是比较让人头疼的事情,之前在移动端一直采用Android下使用LuaJit,Ios下使用Lua5.1.这次升级到Xlua(lua5.3版本)主要有两方面的原因:一是ulua后续维护 ...
- 《Java大学教程》—第8章 通过继承扩展类
8.2 继承(inheritance):继承是指在类之间共享属性和方法.继承关系是一种层次关系.在继承关系中位于顶部的类称为超类(或基类),位于下面的类称为子类(或派生类).类型转换(type ...
- kafka-connect-hdfs连接hadoop hdfs时候,竟然是单点的,太可怕了。。。果断改成HA
2017-08-16 11:57:28,237 WARN [org.apache.hadoop.hdfs.LeaseRenewer][458] - <Failed to renew lease ...
- [Java] SpringMVC工作原理之三:ViewResolver
一.ViewResolver 根据视图的名称将其解析为 View 类型的视图,如通过 ModelAndView 中的视图名称将其解析成 View,View 是用来渲染页面的,也就是将 Model 填入 ...
- Pandas 的数据结构
Pandas的数据结构 导入pandas: 三剑客 from pandas import Series,DataFrame import pandas as pd import numpy as np ...
- C#反射の一个泛型反射实现的网络请求框架
点击下载源码 C#反射の反射详解(点击跳转)C#反射の反射接口(点击跳转)C#反射反射泛型接口(点击跳转)C#反射の一个泛型反射实现的网络请求框架(点击跳转)
- VMware中某个虚拟机卡死,单独关闭某个虚拟机的办法
在虚拟机中部署ceph时,其中一个虚拟机突然意外卡死,网络搜索到解决的办法,特此整理如下: 一.找到卡死虚拟机的安装目录,在安装目录下找到VMware这个文本文档 二.打开该文本文档,在文档中查找pi ...
- vue数据绑定数组,改变元素时不更新view问题
关于这个问题,官网上说的很清楚官方文档 写个例子HTML<body> <div class="box"> <div v-for="aa i ...
- UVA12569-Planning mobile robot on Tree (EASY Version)(BFS+状态压缩)
Problem UVA12569-Planning mobile robot on Tree (EASY Version) Accept:138 Submit:686 Time Limit: 300 ...