一些Python常用小技巧总结

您所在的位置:网站首页 pandas列名重命名 一些Python常用小技巧总结

一些Python常用小技巧总结

2024-05-29 08:23:08| 来源: 网络整理| 查看: 265

######导入 导出###############df=pd.read_excel('D:/1.xls')df.to_csv("D:/test.csv")#没有后缀的数据或奇怪的数据pd.read_table('C:/Users/fafa/Desktop/testA/user_data')pd.read_csv('testA/totalExposureLog.out',sep='\t',names=['ad_request_id','ad_request_time','ad_space_id','user_id','ad_id','Exposure_ad_size','bid','pctr','quality_ecpm','totalEcpm'],memory_map=True)#### 导入Excel的sheet ############# # 方法一:通过 index 指定工作表df3 = pd.read_excel(file_name, sheet_name=0) # 方法二:指定工作表名称df4 = pd.read_excel(file_name, sheet_name='Sheet1')#### 导出Excel的sheet ##############① 导出带有sheet的csv(只能有1个sheet)df1.to_csv("3.csv",mode='a',index=False)#② 导出带有sheet的excel##  命名待被导入的文件writer = pd.ExcelWriter("2.xlsx")##  命名待被导入的sheet ###df1.to_excel(writer,sheet_name='公司维度表',index=False)df2.to_excel(writer, sheet_name='货物维度表',index=False)writer.save()writer.close()

#大文件分批读取并导出为多个小文件,方法2#或者可以快速做一个DataFramedf4 = pd.DataFrame({'col1':['1',3],'col2':[2,4]},index=['a','b'])

#大文件导入导入数据,只选取前100行和特定几列。subset_columns = ['Job #', 'Doc #', 'Borough', 'Initial Cost', 'Total Est. Fee']df = pd.read_csv('文件路径', nrows=100, usecols=subset_columns)df.head()

#################查看数据量#################df.describe()df.count()#二、查看数据常用方法#查看列名df.columns

##################      列名修改 索引修改 内容修改 数据类型转换 时间转换    ###############

##########给没有表头的数据补上列名 或者直接暴力更改列名##################df.columns=['广告id','创建时间','广告账户id','商品id','商品类型','广告行业id','素材尺寸']##########更改列名更改列名更改列名################dataA=df.rename(columns={"姓名":"最高分得主A","得分":"A题"})########选择需要的特征,更改列的顺序##############df1=df1[['广告id','创建时间','商品id', '商品类型', '广告行业id', '素材尺寸']]

######################### 关联两个表 merge ########################## df3=pd.merge(df1,df2,on='广告id')#########################合并两个表concat##############################把"赛题A"增到"A总"############df1=pd.read_excel('D:/电专编程大赛每日数据/编程大赛A题.xls',header=0)df2=pd.read_excel('D:/电专编程大赛每日数据/A总.xls',header=0)#合并每日新数据df1到总表df2:dfA=pd.concat([df1,df2]).drop_duplicates()#去重(按照ID)dfA=dfA.drop_duplicates("ID")#重置索引dfA=dfA.reset_index(drop=True)#导出总表dfA: dfA.to_excel("D:/电专编程大赛每日数据/A总.xls")

###########去重#####################df=df.drop_duplicates(["班级","姓名"])#按照某两列去重df=df.drop_duplicates()#完全相等的去重

###############重置索引###############df=df.reset_index(drop=True)

##################      计时器  #######################################import timestarttime = time.time()#下面填写具体程序time.sleep(2.1)#延时2.1s#上面填写具体程序endtime = time.time()dtime = endtime - starttimeprint("程序运行时间:%.8s s" % dtime)  #显示到微秒

##############################  时间戳    ####################################首先调用包,创建时间戳列import pandas as pd df=pd.DataFrame({"时间戳":[1529648412,1529648412]})

#时间戳按照周期加减一天#比较好的参考

###############①方法    时间戳(1529648412)列→(20180622) ##########################import timedf['时间'] = df['时间戳'] .apply(lambda x:time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(x))) df###############②方法    时间戳(1529648412)列→(20180622)df['时间']=pd.to_datetime(df['时间戳'],unit='s') #→(2018-06-22 06:20:12)##(2018-06-22 06:20:12) → (2018-06-22)df=df.set_index('时间')    #把时间设置为索引(为了转化)df["当日日期"]=df.index.date  #转化为当日日期(2018-06-22)df=df.reset_index()

###############③方法    时间戳(1529648412)列→(20180622)################# Python 时间戳→当日/次日 日期  ########################

####时间戳(1529648412)→(2018-06-22 06:20:12)→(2018-06-22)df['时间']=pd.to_datetime(df['时间戳'],unit='s')df=df.set_index('时间')    #把时间设置为索引(为了转化)df["date"]=df.index.date  #转化为日期(2018-06-22)df=df.reset_index() #####(2018-06-22)→年月日三列→(20180622)df["年"]=df["date"].map(str).str[0:4]df["月"]=df["date"].map(str).str[5:7]df["日"]=df["date"].map(str).str[8:]df["日期"]=df["年"].map(str)+df["月"]+df["日"]df

#####时间戳(1529648412)列→年月日三列→为(20180622)  (暂时行不通 )df['year'] =df['时间戳'].apply(lambda x: time.localtime(x).tm_year) df['month'] = df['时间戳'].apply(lambda x: time.localtime(x).tm_mon) df['day'] =df['时间戳'].apply(lambda x: time.localtime(x).tm_mday)#暂时行不通(2018+6+22): df3["创建日期"]=df3["year"].map(str)+df3["month"].map(str)+df3["day"].map(str)

###################④方法:任意时间格式→时间戳函数 from datetime import datetime#任意时间格式→时间戳函数def time2stamp(cmnttime):     cmnttime=datetime.strptime(cmnttime,'%Y%m%d') #这里可以更改任意格式:'%Y-%m-%d %H:%M:%S'        stamp=int(datetime.timestamp(cmnttime))    return stampdf['日期时间戳']=df['日期'].apply(time2stamp)

#########################          处理脏数据    ##########################################①找出一列中的不同元素,并按照最大值输出#####import pandas as pdimport numpy as npdf=pd.DataFrame({"id":["1","2","3,4"]})df#仅保留最大值def max_str(t):    a=[int(i) for i in t]    return max(a)df["id_max"]=df["id"].str.split(",").map(max_str)df############②找出一列中的不同元素,并按照最大值输出##### #清理带有“,”的脏数据 df2=df.astype(str)#令所有内容变成字符串#清理广告行业id的脏数据df3=df2[df2["广告行业id"].str.contains(",")]#包含逗号的数据L1=list(df3.广告行业id)#包含逗号的数据做成一个列表list1L2=list(df2.广告行业id)#全部数据做成一个列表list2L3=list(set(L2)^set(L1))#列表求差集的方法:去掉脏数据的正常数据集合df[df.广告行业id.isin(L3)]#isin()搜寻正常数据集合的最终结果#直接方法:  ~isin()搜寻不包含异常值的最终结果df[~df.广告行业id.isin(L1)]############③找出一列中的不同元素,拆分输出#####import pandas as pddf=pd.DataFrame([["a","15"],["b,c","16"]],columns=["姓名","分数"])df.set_index("分数")["姓名"].str.split(",",expand=True).stack().reset_index(level=1,drop=True).reset_index(name="姓名")#############④处理空值NaN#######################import pandas as pd,numpy as np  df=pd.DataFrame({'姓名':'张三 李四 王五 赵六 孙七 马八'.split(),'年龄':[18,np.nan,22,23,11,np.nan]})#找出空值 isnull() notnull()#填充空值NaN为0 或者其他df.fillna(0)#删去指定列空值所在行或列删除空值行(axis=0)或列(axis=0)df.dropna(axis=0, how="any", thresh=None, subset=None, inplace=False) #当然可以直接简写df.dropna()#删去指定列空值所在行df[np.isnan(df.年龄)==False ]#值替换 df.replace()

####################    条件筛选+分组统计    ##############################找出满足条件的数据(年月相同,曝光日为创建的第二日)df=df3[df3.创建日期.map(int)+1==df3.广告请求日期.map(int)]

#统计"相同ID"和"创建时间"的数据计数 (按照"广告id" 和 "创建日期"分组并计数) 即"次日曝光量"df['次日曝光量']=df.groupby(['广告id','创建日期'])['广告id'].transform(len)#方法二counts=df.groupby(['id','日期']).size() #获得'id' '日期' "次日曝光量" 三列 这样的表countscounts=df.reset_index(name='label') #重置索引(否则表头高度不一致)df=df.merge(counts,how='inner',on=['id','日期'])#按照两列关联到一起,即得到“日曝光量”这一列

#按照max得分统计队伍data2=data.groupby(["队伍名称"],as_index=False)["得分"].max()#按照sum得分统计队伍 data2=data.groupby(["队伍"],as_index=False)["得分"].sum() #按照 个数 统计 队伍 data.groupby(["队伍"]).size()

#增加一列 求和 df["总分"]=df.sum(axis=1)#排序(按照最终分数) df=df.sort_values(by="总分",ascending=False) #让索引从1开始df.index = df.index+1

##############  像excel一样操作 按照某种条件 增加一列  ①############def F(a):    if a[1]a[2]:         s='乙'     return sdf["完成人"]=[F(df.iloc[i]) for i in range(len(df.index))]

############  像excel一样操作 按照某种条件 增加一列  ② IF函数  #####对应的Excel语言: =IF(条件,分支1,分支2)df1['category'] = np.where(df1['total'] > 200000, 'A', 'B')

# 提取前2位 到新的一列#

df[b] = df[a].apply(lambda x : x[:2])

题目:[1,2,3,1,1,1,0,0,0,2,2,2,1,1,1,1,1]中 求出最长的连续序列个是1 个数是5

import pandas as pddf=pd.DataFrame({"in":[1,2,3,1,1,1,0,0,0,2,2,2,1,1,1,1,1]})df["out"]=df["in"].groupby((df["in"]!=df["in"].shift()).cumsum()).cumcount()+1df[df["out"]>4]

1.  list1 = [1,2,3]

2.  list2 = [3,4,5]

3.  set1 = set(list1)    # 去重

4.  set2 = set(list2)    # 去重

5.  print(set(1)&set(2))    #交集

6.  print(set(1)^set(2))  #补集

7 set(1)-set(2)

groupby, agg, apply用法

def func(x):

    if x>20:

        return '20+k'

    else:

        return '0-20k'

position.apply(lambda x:func(x.avg),axis=1).head()

《pandas.apply实测使用方法》https://blog.csdn.net/weixin_39757737/article/details/78698316

If you are interested in this topic.You can get in touch with me.18234056952(Tel  wechat  qq)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭