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函数的更多相关文章

  1. Python:笔记(2)——函数与模块

    Python:笔记(2)——函数与模块 Python函数 关于函数 1.我们可以使用Help来查看函数的帮助信息 2.调用函数的时候,如果传入的参数数量或者类型不符合均会报错. 3.函数名其实就是一个 ...

  2. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  3. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  4. matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://blog.csdn.net/qq_36556 ...

  5. 第2章KNN算法笔记_函数classify0

    <机器学习实战>知识点笔记目录 K-近邻算法(KNN)思想: 1,计算未知样本与所有已知样本的距离 2,按照距离递增排序,选前K个样本(K<20) 3,针对K个样本统计各个分类的出现 ...

  6. pandas函数应用

    1.管道函数 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/5/24 15:03 # @Author : zhang cha ...

  7. Py修行路 Pandas 模块基本用法

    pandas 安装方法:pip3 install pandas pandas是一个强大的Python数据分析的工具包,它是基于NumPy构建的模块. pandas的主要功能: 具备对其功能的数据结构D ...

  8. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. 阅读{django-restframework}源码[generics.py]学习笔记

    首先django-restframework是基于django的一个框架.   mixins.py中开头是这样写的: Basic building blocks for generic class b ...

随机推荐

  1. 数据挖掘---Pandas的学习

    Pandas介绍(panel + data + analysis) 为什么使用Pandas        便捷的数据处理能力        读取文件方便        封装了Matplotlib.Nu ...

  2. LeetCode算法题-Third Maximum Number(Java实现-四种解法)

    这是悦乐书的第222次更新,第235篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第89题(顺位题号是414).给定非空的整数数组,返回此数组中的第三个最大数字.如果不存 ...

  3. Linux 小知识翻译 - 「动态DNS」(DDNS)

    这次聊聊「动态DNS」. DNS上周已经介绍过了,就是提供主机名和IP地址对应关系的结构.「动态DNS」是对主机名和IP地址的对应关系提供动态管理的结构. 以前的DNS没有考虑IP地址变化的情况.但是 ...

  4. linux下的文件目录结构

    linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录 - root,存放root用户的相关文件 - home,存放普通用户的相关文件 - b ...

  5. zuul重试配置

    #retry#该参数用来开启重试机制spring.cloud.loadbalancer.retry.enabled=true#断路器的超时时间,断路器的超时时间需要大于ribbon的超时时间,不然不会 ...

  6. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创  2017-08-26  翟永超  Spring Cloud 被围观 ...

  7. yum安装提示Another app is currently holding the yum lock; waiting for it to exit...

    在Linux系统中使用yum安装软件时,提示yum处于锁定状态 Another app is currently holding the yum lock; waiting for it to exi ...

  8. [matlab] 2.数据可视化

    t=(0:0.01:2)*pi; x=sin(t); y=cos(t); z=cos(2*t); plot3(x,y,z,'r-','linewidth',1.5); box on; %打开坐标系边框 ...

  9. mysql之grant权限说明

    mysql中给一个用户授权如select,insert,update,delete等其中的一个或者多个权限,主要使用grant命令,格式为: 给没有用户授权 grant 权限 on 数据库对象 to ...

  10. 无备份时用dbms_repair恢复坏块的方法

    份的情况下可以直接使用备份来恢复. 对于通过备份恢复,Oracel为我们提供了很多种方式,冷备,基于用户管理方式,RMAN方式等等. 对于这几种方式我们需要实现基于数据库以及文件级别的恢复.RMAN同 ...