pandas数据清洗(二)

import pandas as pd
import numpy as np
from pandas import DataFrame
import datetime
import sys
import pymysql
import csv
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

# db = pymysql.connect(‘localhost‘, ‘root‘, ‘123456‘, ‘languid‘)
engine = create_engine(‘mysql+pymysql://root:[email protected]/languid?charset=utf8‘)
db = scoped_session(sessionmaker(bind=engine))

col_list = [‘user‘, ‘tm_type‘, ‘serv‘, ‘app‘, ‘record_time‘, ‘up_flux‘, ‘down_flux‘]#上网账号#终端类型#服务#app#记录时间#上行流量#下行流量

filepath=‘C://百度网盘//20181007_flux_40.csv‘
# def data_deal(filepath):
if __name__ == ‘__main__‘:
    df_flux = pd.read_csv(filepath, sep=‘,‘, error_bad_lines=False, usecols=[3, 10, 11, 12, 15, 16, 17], names=col_list,engine=‘python‘,encoding = "utf-8",nrows=22222)
    df_flux.dropna(how=‘all‘,inplace=True)
    df_flux.dropna(subset=[‘user‘],inplace=True,axis=0)
    df_flux[‘record_time‘]=‘2019-5-28‘
    df_flux2 = df_flux.groupby(by=[‘user‘,‘tm_type‘,‘serv‘,‘app‘,‘record_time‘])[‘up_flux‘,‘down_flux‘].sum()
    df_flux3 = df_flux.groupby(by=[‘user‘, ‘tm_type‘, ‘serv‘, ‘app‘, ‘record_time‘]).count()
    df_flux4 = df_flux3.drop([‘down_flux‘], axis=1)
    df_flux5 = df_flux4.rename(columns={‘up_flux‘: ‘counts‘}, inplace=False)

    df_flux2=DataFrame(df_flux2)
    df_flux2 = df_flux2.rename(columns={‘up_flux‘: ‘up_flux_sum‘,‘down_flux‘:‘down_flux_sum‘})

    result = pd.concat([df_flux5, df_flux2], axis=1)

    print(result)

1.清洗数据中的全空行 2.清洗user列中的空值的行 3.统计上行流量列以及下行流量列的当天每人每终端服务app的总量。 4.统计每人每天终端服务app的次数。

import pandas as pd
import numpy as np
from pandas import DataFrame
import datetime
import sys
import pymysql
import csv
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

# db = pymysql.connect(‘localhost‘, ‘root‘, ‘123456‘, ‘languid‘)
engine = create_engine(‘mysql+pymysql://root:[email protected]/languid?charset=utf8‘)
db = scoped_session(sessionmaker(bind=engine))

col_list = [‘user‘, ‘tm_type‘, ‘serv‘, ‘app‘, ‘record_time‘, ‘up_flux‘, ‘down_flux‘]#上网账号#终端类型#服务#app#记录时间#上行流量#下行流量
student_list=[‘user‘,‘age‘,‘low‘,‘high‘,‘time‘]

filepath=‘C://百度网盘//20181007_flux_40.csv‘
filepath2=‘C://百度网盘//v_student_net.csv‘
# def data_deal(filepath):
if __name__ == ‘__main__‘:
    df_flux = pd.read_csv(filepath, sep=‘,‘, error_bad_lines=False, usecols=[3, 10, 11, 12, 15, 16, 17], names=col_list,engine=‘python‘,encoding = "utf-8")
    df_flux.dropna(how=‘all‘,inplace=True)
    df_flux.dropna(subset=[‘user‘],inplace=True,axis=0)
    df_flux[‘record_time‘]=‘2019-5-28‘
    df_flux2 = df_flux.groupby([‘user‘, ‘tm_type‘, ‘serv‘, ‘app‘, ‘record_time‘], as_index=False)[‘up_flux‘, ‘down_flux‘].sum()
    df_flux3 = df_flux.groupby(by=[‘user‘, ‘tm_type‘, ‘serv‘, ‘app‘, ‘record_time‘],as_index=False).count()
    df_flux4 = df_flux3.drop([‘down_flux‘], axis=1)
    df_flux5 = df_flux4.rename(columns={‘up_flux‘: ‘counts‘}, inplace=False)
    df_flux2=DataFrame(df_flux2)
    df_flux2 = df_flux2.rename(columns={‘up_flux‘: ‘up_flux_sum‘,‘down_flux‘:‘down_flux_sum‘})
    result = pd.concat([df_flux2, df_flux5[‘counts‘]], axis=1)
    result_1 = df_flux2[~df_flux2[‘user‘].str.contains(‘10\.‘)]
    result_1[‘down_flux_sum‘] = result_1[‘down_flux_sum‘].astype(float)
    # result_1[‘user‘] = result_1[‘user‘].astype(float)
    # qqq = result_1[result_1[‘user‘]]
    result_1[‘tm_type‘].replace(‘\/移动终端\/\w*系统移动终端‘,‘mobile‘,regex=True,inplace=True)
    result_1.loc[result_1[‘tm_type‘].str.contains(‘多终端‘),‘tm_type‘]=‘多终端‘
    result_1.loc[result_1[‘tm_type‘].str.contains(‘未知类型‘), ‘tm_type‘] = ‘Unknown‘
    result_1[‘tm_type‘].replace(‘\/PC\/MAC PC‘,‘PC‘,regex=True,inplace=True)

    v_student = pd.read_csv(filepath2,sep=‘,‘,error_bad_lines=False,engine=‘python‘,encoding=‘utf-8‘,header=0,index_col=[0])
    unique_value = v_student[‘username‘].nunique()
    v_student = v_student.rename(columns={‘username‘: ‘user‘}, inplace=False)
    student_merge=pd.merge(v_student,result_1,how=‘inner‘)
    student_group = student_merge.groupby([‘class_code‘],as_index=False)[‘down_flux_sum‘]
    student_group_2 =student_merge.groupby([‘class_code‘],as_index=False)[‘up_flux_sum‘].count()
    student_group_3 = student_group_2.rename(columns={‘up_flux_sum‘: ‘counts‘}, inplace=False)

1.用正则表达以及loc清洗tm_type列的数据,做以下更改

系统移动终端=mobile()

pc=pc()

多终端=多终端()

未知=unknown()

2.ip数据过滤() 将user列中的为ip的数据行过滤

3.类型转换=上行流量转化成其他类型()

原文地址:https://www.cnblogs.com/languid/p/10960559.html

时间: 2024-10-20 19:55:02

pandas数据清洗(二)的相关文章

2.pandas数据清洗

pandas是用于数据清洗的库,安装配置pandas需要配置许多依赖的库,而且安装十分麻烦. 解决方法:可以用Anaconda为开发环境,Anaconda内置了许多有关数据清洗和算法的库. 1.安装pandas首先需要安装Numpy和python-dateutil(可以直接在控制控制台pip安装),然后再配置pandas.2.安装好Anaconda后,启用命令行窗口输入 jupyter notebook.3.在默认浏览器新建jupyter,配置jupyter界面右侧new下拉列表,选择pytho

Python数据分析--Pandas知识点(二)

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) 下面将是在知识点一的基础上继续总结. 13. 简单计算 新建一个数据表df 1 import pandas as pd 2 3 df = pd.DataFrame({"地区": ["A区","B区", "C区"], 4 "前半年销量": [3500, 4500,3800], 5

Pandas 数据清洗常用篇

一.缺失值 sklearn中的preprocessing下游imputer,可进官方文档参考.这里主讲pandas. 拿到数据,一般先检查是否有缺失值,用isnul()或notnull(). 再决定dropna(),还是fillna(). 1.1 检查是否有缺失值 isnull().notnull() import pandas as pd import numpy as np df = pd.DataFrame({"col_1":[1, 2, 3, 666, 1480], "

Pandas数据处理二

3.7 合并数据集: Concat与Append操作将不同的数据源进行合并是数据科学中最有趣的事情之一, 这既包括将两个不同的数据集非常简单地拼接在一起, 也包括用数据库那样的连接(join) 与合并(merge) 操作处理有重叠字段的数据集. Series 与DataFrame 都具备这类操作, Pandas 的函数与方法让数据合并变得快速简单. 先来用 pd.concat 函数演示一个 Series 与 DataFrame 的简单合并操作. 之后, 我们将介绍 Pandas 中更复杂的 me

Pandas数据分析 (二)

数据初步探索 数据展示与文本读写 三种展示数据的方式 head() tail() sample() 1 import pandas as pd 2 import numpy as np 3 4 df = pd.read_csv("anime.csv") 5 6 # head(n) 可以显示前 n 个样本,n默认为5 7 df.head() 8 df.head(2) 9 10 # tail(n) 显示末尾 n 个样本 11 df.tail(2) 12 13 # sample(n) 从数据

浅谈python的第三方库——pandas(二)

pandas使用小贴士 1 通过Series创建DataFrame 在pandas系列的第一篇博文中曾提到,Series可视为DataFrame的一种特例,即只有一列数据.既然如此,是否可以并列多个Series组成一个DataFrame呢?当然可以,通过这种方式创建DataFrame也称为用字典建立数据,由各列列名充当字典的键,该列数据构成的Series充当该键对应的值.示例如下: 上图中,Series类型充任df_1的第二列,因为pandas默认以"0,1,2,3"形式给行列命名,本

小白学 Python 数据分析(11):Pandas (十)数据分组

人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):Pandas (二)数据结构 Series 小白学 Python 数据分析(4):Pandas (三)数据结构 DataFrame 小白学 Python 数据分析(5):Pandas (四)基础操作(1)查看数据 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择 小白学

7-感觉身体被掏空,但还是要学Pandas(下)

本周群主用了两天时间为浙师大的<旅游大数据分析师--Pandas数据清洗>课程备课,和Pandas来了一次深度亲密接触.现在做梦都是DataFrame变形:stack,unstack,pivot table--对Pandas有了全新的认识:原来它不只是提供类似表格的数据结构DataFrame这么简单,简直就是Excel+SQL的集大成者!而且拥有Python如此优雅的语法,真的可以说是"微言大义","玄之又玄,众妙之门","妙处难与君说&quo

Pandas 操作

一.Series的创建: pd.Series([ 数据 ]) In [17]: import pandas as pd In [18]: import numpy as np In [19]: s = pd.Series([1,1,1,1,np.nan]) In [20]: s Out[20]: 0 1.0 1 1.0 2 1.0 3 1.0 4 NaN dtype: float64 二.生成DataFrame 1,Numpy 产生随机数组 In [17]: np.random.rand(5,5