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. Linux: yum配置说明

    下面是利用 man yum.conf 命令获取到的有关yum配置的说明: yum.conf(5) yum configuration file yum.conf(5) NAME yum.conf - ...

  2. Ubuntu 12.04上安装R语言

    Ubuntu 12.04上安装R语言 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ R的安装 sudo gedit /etc/apt/sources. ...

  3. MATLAB简易画图2—普通直角坐标系

    MATLAB简易画图2—普通直角坐标系 本人的MATLAB版本为: 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 继续在“MATLAB简易画图”这篇随 ...

  4. 设计模式のMediatorPattern(中介者模式)----行为模式

    一.产生背景 从生活中的例子可以看出,不论是QQ游戏还是QQ群,它们都是充当一个中间平台,QQ用户可以登录这个中间平台与其他QQ用户进行交流,如果没有这些中间平台,我们如果想与朋友进行聊天的话,可能就 ...

  5. Jenkins+Ansible+Gitlab自动化部署三剑客-gitlab本地搭建

    实际操作 准备linux初始环境 关闭防火墙 systemctl stop firewalld 开机自己关闭 systemctl disable firewalld 设置安全配置 为关闭 vim /e ...

  6. 7.02-bs4_btc

    import requests from bs4 import BeautifulSoup from lxml import etree import json class BtcSpider(obj ...

  7. [TJOI2017]城市

    嘟嘟嘟 这题刚开始想复杂了,想什么dp去了,其实没那么难. 考虑断掉一条边,记分离出来的两棵子树为A和B,那么合并后的树的直径可能有三种情况: 1.A的直径. 2.B的直径 3.A的半径+边权+B的半 ...

  8. filter 实现登录状态控制

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 网站需要做用户登录鉴权控制,没有登录的话,不能访问网站,提示需要登录. 实现方式: 使 ...

  9. 【转】bios与CMOS有什么区别

    正确的解释应该是: BIOS是软件.是程序! CMOS是芯片.是硬件! 实际上我们是通过BIOS这个程序,去设置CMOS里的参数的. CMOS是一块芯片,集成在主板上,里面保存着重要的开机参数,而保存 ...

  10. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...