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. LeetCode算法题-Path Sum(Java实现)

    这是悦乐书的第169次更新,第171篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第28题(顺位题号是112).给定二叉树和整数sum,确定树是否具有根到叶路径,使得沿路 ...

  2. June 7. 2018 Week 23rd Thursday

    Half is worse than none at all. 一知半解比一无所知更痛苦. From Westworld. If we go looking for the truth, get th ...

  3. Nginx使用教程(三):Nginx配置性能优化之I/O和TCP配置

    配置Nginx I/O <br\> Sendfile 当应用程序传输文件时,内核首先缓冲数据,然后将数据发送到应用程序缓冲区. 应用程序反过来将数据发送到目的地. Sendfile方法是一 ...

  4. Docker for Windows 中文文档(3)——Docker Settings

    Docker设置 Docker运行时,显示Docker鲸鱼. 默认情况下,Docker鲸鱼图标被放置在“通知”区域中. 如果隐藏,单击任务栏上的向上箭头显示. 提示:您可以将鲸鱼固定在通知框外面,使其 ...

  5. 设计模式のInterpreter Patern(解释器模式)----行为模式

    一.问题产生背景 有一句话“小明和小龙是好朋友”,我想分析其中谁是人,我想分析他们的关系等多种需求,那么我们应该如何处理,如果为每一个关系都进行判断?显然不合适,我们可以将二者的关系进行抽象处理,然后 ...

  6. springBoot 搭建web项目(前后端分离,附项目源代码地址)

    springBoot 搭建web项目(前后端分离,附项目源代码地址)   概述 该项目包含springBoot-example-ui 和 springBoot-example,分别为前端与后端,前后端 ...

  7. ansible批量免秘登录

    ansible批量免秘登录   主控机 10.22.0.185 centos7 被控机 10.22.0.186 centos7 一.主控机安装ansible yum install epel-rele ...

  8. pycharm企业版注册码

    pycharm下载最新版 链接:https://pan.baidu.com/s/1gKOCf3PQFc1_2amkMUU1-A 提取码:9pt0 下载企业版: http://www.jetbrains ...

  9. 四.js 正则表达式

    一.正则表达式 1.定义:对字符串规则的描述 2.作用:可以检查字符串是否符合规则,可以按规则来截取字符串 3.定义: a.简单模式:var reg = /hello/; b.复杂模式:var reg ...

  10. Android APP性能测试笔记(一)

    Android APP性能测试笔记(一) (1)工具使用   Android Studio  GT, root的真机 (2)记录apk大小(对比竞品)   使用Android Studio导入需要测试 ...