日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python pandas csv时间聚合_Python通过pandas操作excel常用功能

發布時間:2025/3/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pandas csv时间聚合_Python通过pandas操作excel常用功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.導入數據源

#導入相關庫

import pandas as pd

import numpy as np

import os

from pandas import DataFrame,Series

import re

df =pd.read_csv(r'E:\work\daima\python\forestfires.csv') #打開文件

2.數據基本處理

1)查看列名和數據類型

print(df.columns) #查看列名

print(df.dtypes) #查看各列數據類型

2)查看指定行列數據

print(df.head(20)) #查看前20行數據

df=df.loc[:,'FFMC':'rain'] #選擇FFMC到rain列所有數據

3)刪除行或列

df=df.drop(['wind', 'rain', 'area'],axis=1) #刪除wind,rain和area三列

df_an=df_an.loc[-(df_an['qudao']=='Total')] #刪除qudao列等于'Total'的行

4)移除重復數據

df_new=df.drop_duplicates(['month','day']) #移除month和day列包含重復值得行,保留第一個

df_new=df.drop_duplicates(['month'],take_last=True )#移除month列包含重復值得行,保留最后一個

5)更改列名

df.rename(columns={'ISI':'isi'}, inplace = True) #ISI列列名改為isi

2.描述性統計

1)計算某列變量頻數

print(df['month'].unique()) #輸出month列唯一值

print(df['month'].value_counts()) #輸出month列各變量出現頻數

2)分段統計

bins=[0,10,20,30,40,50,60,70,80,90,100]

group_names=['0-10','10-20','20-30','30-40','40-50','50-60','60-70','70-80','80-90','90-100']

cats=pd.cut(df['RH'],bins,labels=group_names)

pd.value_counts(cats,sort=False)

3)添加一列分組列,做多維頻數統計

bins=[0,10,20,30,40,50,60,70,80,90,100]

group_names=['0-10','10-20','20-30','30-40','40-50','50-60','60-70','70-80','80-90','90-100']

cats=pd.cut(df['RH'],bins,labels=group_names)

df_concat=pd.concat([df,cats],axis=1,ignore_index=True)

df_group=df_concat[7].groupby([df_concat[0],df_concat[6],df_concat[7]])

df_fum=df_group.agg('count')

3.缺失值處理

1)缺失值統計

a顯示有缺失值的行

df[df.isnull().values==True] #顯示有缺失值的行

b增加一列,顯示每行的缺失值

df_na=(df.isnull()).sum(axis=1) #統計每行的缺失值

df=pd.concat([df,df_na],axis=1) #df和df_na橫向拼接

df.rename(columns={0:'na_num'}, inplace = True) #更改列名

df=df.loc[df['na_num']<=5]#刪去變量值大于5的行

2)填充缺失值

a刪除含有缺失值的行(或者全為NA的行)

df.dropna()#刪除含有缺失值的行

df.dropna(how='all')#只丟棄全為NA的那些行

b填充固定值

train_data.fillna(0, inplace=True) # 填充 0

c填充均值

df['DC'].fillna(df['DC'].mean(),inplace=True) # 填充均值

d填充中位數

df['DC'].fillna(df['DC'].median(),inplace=True) #DC列缺失值填充為DC列的中位數

e填充眾數

df['DC'].fillna(df['DC'].mode(),inplace=True) # 填充眾數

#循環用眾數填充每列缺失值,若眾數為na的情況,刪掉na

features=['X', 'Y', 'month', 'day', 'FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH',

'wind', 'rain', 'area']

features_mode = {}

for f in features:

print (f,':', list(df[f].dropna().mode().values))

features_mode[f] = list(df[f].dropna().mode().values)[0]

df.fillna(features_mode,inplace=True)

f填充上下條的數據

df['DC'].fillna(method='pad', inplace=True)

df['DC'].fillna(0, inplace=True)# 前一條沒值就填充0

df['DC'].fillna(method='bfill', inplace=True)

df['DC'].fillna(0, inplace=True)# 后一條沒值就填充0

g填充KNN數據

from fancyimpute import KNN

features=['X', 'Y', 'month', 'day', 'FFMC', 'DMC', 'DC', 'ISI', 'temp', 'RH',

'wind', 'rain', 'area']

train_data_x = pd.DataFrame(KNN(k=6).fit_transform(df), columns=features)

4.篩選

1)條件篩選loc

df_sel=df.loc[(df['month']=='aug') & (df['DC']>=600)] #篩選month列等于aug且DC列大于600的所有行

2)篩選并給新列賦值

這個多用于區間匹配,例如如果A列(0,100],C列為50;A列大于100 ,C列為A列的值。

df.loc[(df['DC']>0) & (df['DC']<=100) ,'DC_na']=50 # 創建新列DC_na,DC列大于0且小于等于100,DC列為50

df.loc[df['DC']>100,'DC_na']=df['DC']# 創建新列DC_na,DC列大于100等于原值,其他為NA

這里舉一個其他類似的例子:

有一組數據包含三列(列名為A,B,C),現在要新增一個D列,如果A>100且5100且B>=7,那么D列的值等于C列減10,其他情況D列的值等于C列的值。

df['D']=df['C']

df.loc[(df['A']>100) & (df['B']>=5) &(df['B']<=7) ,'D']=df['C']-5

df.loc[(df['A']>100) & (df['B']>=7) ,'D']=df['C']-10

3)模糊篩選/精確篩選:isin(),contains()

df_sel1=df[df['day'].str.contains('fr')] # 篩選day列包含fr字符的行

df_sel2=df[df['day'].isin(['fri','mon'])] # 篩選day列等于fri或mon的行

5.替換

1)去掉字符串兩端空格

df_city['experience_new'] = df_city['experience'].map(lambda s: s.strip())#experience列中文前后端包含空格,需對改列進行分詞處理(去掉空格),賦值給新列experience_new

2)替換

#將experience_new列中的應屆畢業生替換為1年以下

df_city = df_city.replace({'experience_new':'應屆畢業生'},'1年以下')

df_city['expreienct_new']=df_city['expreienct_new'].map(lambda s:re.sub('應屆畢業生','1年以下',s))

6.提取字符串

1)分列

df['new']=df['day'].map(lambda s:re.compile(':').split(s)[0])#對df['day']列按照符號':'進行分列并提取第一個值,賦值到新列df['new']

2)搜索字符串

這個情況很多,涉及到很多正則表達式知識。

df['xin']='U34' #增加新列,列名為xin,為新列賦值U34

df['zimu']=df['xin'].map(lambda s:re.compile("([0-9]+)").search(s).group()[0])#搜索字母并提取第一個值

df['shuzi']=df['xin'].map(lambda s:re.compile("[a-zA-Z]+").search(s).group()[0])#搜索字母并提取第一個值

3)如果未匹配到關鍵字,直接用group()函數會報錯

def chuli(s):

jieguo=re.compile("([0-9]+)").search(s)

if jieguo:

jieguo=int(jieguo.group())+1

else :

jieguo=0

return jieguo

df['Room']=df['Cabin'].map(chuli)

7.關聯

1)兩表關聯:merge(左關聯,右關聯)

比如有以下兩個數據集

df1 客戶信息表

customer_id sex city

10084 ? ?男 北京

10085 ? ?女 上海

10086 ? ?男 廣州

10087 ? ?女 深圳

df2訂單表

order customer_id product shouru

CH001 10084 ? ? ? ? A 500

CH002 10085 ? ? ? ? B 200

CH003 10086 ? ? ? ? C 1000

CH004 10086? ? ? ? ?D 3000

a左關聯

df_merge=pd.merge(df1,df2,on='customer_id',how='left') #左關聯

print(df_merge)

注意第三四列,與EXCEL匹配的邏輯稍有不同。

customer_id sex city order product shouru

10084? ? ? 男 北京? CH001 A? ? 500

10085? ? ? 女 上海? CH002 B? ? 200

10086? ? ? 男? 廣州 CH003? C? ?1000

10086? ? ? 男? 廣州 CH004? D? ?3000

10087? ? ? 女? 深圳? NA? ? NA? ? NA

b根據多列進行左關聯

pd.merge(df1,df2,on=['key1','key2'],how='left')#多鍵連接

2)多表進行關聯

a軸向連接:concat()

pd.concat([df1,df2],axis=1,ignore_index=True)#df1和df2橫向拼接

b多表關聯:reduce()

from functools import reduce

df_list=[df_dau,df_gmv_zx,df_dau_zx]

df_zhengti=reduce(lambda left,right:pd.merge(left,right,on=['event_date','duan'],how='left'),df_list) #按照event_date,duan 從左到右對df_list中的文件進行左關聯

8.聚合(數據透視表)

類似于數據透視表,類似于sumifs(),countifs(),averageifs()等函數的效果。

1)聚合groupby()

df_group=df['DC'].groupby([df['month'],df['day']]) #根據month和day列對DC列進行聚合

df_fun=df_gorup.agg(['sum','mean','std']) #對df_group求和,均值和標準差

print(df_fun)

2)數據透視表pd.pivot_table()

這個函數比較難記,可以參考EXCEL數據透視表去理解,index代表列,columns代表行,values代表值,aggfunc代表要對值用什么函數,fil_value代表缺失值用0填充。

df_toushi=pd.pivot_table(df,index=['month'],columns=['day'],

values=['DC'],aggfunc=[np.sum,np.mean],fill_value=0)

print(df_toushi)

9.排序

按照DMC列降序,DC列升序對數據集進行排序。

df_paixu=df.sort_values(by=['DMC','DC'],ascending=[0,1])

10時間序列處理

1)csv中的時間會被讀取為字符串,需要批量處理為pandas可處理的時間類型

df['date']=pd.to_datetime(df['createTime']) #批量轉換createTime中的時間,并賦值到date列

df[(df['date']>='20140701')&(df['date']<='20140715')]#篩選指定時間段數據

2)時間設置

from datetime import datetime, timedelta

import time

today = datetime.today()#今天

yesterday_ts = time.time() - 24 * 3600#昨天

yesterday = datetime.fromtimestamp(yesterday_ts).strftime('%Y-%m-%d') #轉換為年月日

fromtime = (today -timedelta(16)).strftime('%Y-%m-%d') #16天前,并轉化為年月日

day_before_yesterday_ts = yesterday_ts - 24*3600#前天

day_before_yesterday = datetime.fromtimestamp(day_before_yesterday_ts).strftime('%Y-%m-

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python pandas csv时间聚合_Python通过pandas操作excel常用功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产在线一级片 | 国产精品乱码一区二区视频 | 91精品人妻一区二区三区蜜桃欧美 | 精品欧美一区二区三区在线观看 | 毛片精品| 亚洲精品韩国 | 春物催眠 | 日本一区二区三区在线看 | 久久久久久久久网站 | 秋霞午夜影院 | 亚洲第一字幕 | 欧美日韩一区二区视频在线观看 | 欧美一级片免费在线观看 | 美女性高潮视频 | 波多野结av衣东京热无码专区 | 欧美在线观看视频一区 | 欧美三级视频 | 潘金莲一级淫片免费放动漫 | 国产suv精品一区二区883 | 少妇搡bbbb搡bbb搡打电话 | 一区二区美女视频 | 性欧美丰满熟妇xxxx性 | 激情五月婷婷在线 | 国产精品毛片一区视频播 | 久久99久久99 | 99爱视频| 欧美老熟妇乱xxxxx | 色老头一区二区三区 | 中国大陆高清aⅴ毛片 | 特极毛片 | 欧美一区二区三区久久成人精品 | 人人舔人人 | 久久99国产精品一区 | 日日碰狠狠添天天爽无码 | 亚洲乱码国产乱码精品精 | 日本不卡高清视频 | 四虎网址大全 | 国产超碰 | 久久久久一区二区 | 成人影视免费 | 欧美黑人一级 | 成人激情视频在线 | 免费一级欧美片在线播放 | 性网爆门事件集合av | 成人午夜电影网站 | 在线观看亚洲色图 | 日韩视频专区 | 法国性xxxx精品hd | 欧美日韩色视频 | 最近高清中文在线字幕在线观看 | 亚洲精品a区 | 中文字幕日韩欧美一区二区 | 男人的天堂在线播放 | 日本69熟 | 日本免费无人高清 | 婷婷中文在线 | 欧美a天堂| 性欧美成人播放77777 | 国产96在线 | 亚洲 | 91av国产精品 | 亚洲天堂av中文字幕 | 美女色呦呦 | 男人插女人视频网站 | 99re视频在线播放 | 亚洲av永久无码精品放毛片 | 欧美中文字幕在线播放 | 91啦中文 | aa视频网站 | 亚洲午夜精品久久 | 2020自拍偷拍 | 毛片黄色一级 | 久久久久国产精品国产 | 全部免费毛片在线播放一个 | 草草在线观看 | 手机av在线看 | 四虎影城库| 亚洲午夜av | 欧美精品色婷婷五月综合 | 久久性片 | 岛国av中文字幕 | 国产网站无遮挡 | 九九热视频在线免费观看 | 一级一毛片 | av色综合| 永久免费av无码网站性色av | 欧美日韩在线免费视频 | 国产学生美女无遮拦高潮视频 | 日韩综合 | av资源网在线观看 | 四虎看黄 | 69成人免费视频 | 久久久久久国产精品免费 | 欧美性大战久久久 | 玉米地疯狂的吸允她的奶视频 | 中国黄色免费网站 | 精品二区在线观看 | 51精品国产 | 精品久久免费观看 | 亚洲韩国精品 |