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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据分析训练营-pandas

發(fā)布時(shí)間:2023/12/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析训练营-pandas 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import pandas as pd #創(chuàng)建列 ser=pd.Series('張三','李四','王五',list(range(1,4))) #取值 ser[2]ind=[1,3] ser[ind]#取索引為1和3的 ser.values#取值 type(ser.values)#ndarray ser2=pd.Series(18,19,17,list(range(1,4))) ser2+1#每一行的數(shù)據(jù)都+1 ser2{ser2%2==0]#篩選取余 data={'beijing':9000,'shanghai':8500,'guangzhou':7400} ser3=pd.Series(data)#索引變成了字符串beijing等 ser3['beijing']#通過索引找值 'beijing' in ser3 #判斷索引是否在返回True ser3.to_dict()#轉(zhuǎn)化為字典 ser3.tolist() ser3.tojson() ser3to_frame()DataFrame import numpy as np data=np.arrange(100,109).reshape(3,-1) df=pd.DataFrame(data)#生成數(shù)據(jù)表 data={'name':['jack','mary','lily'],'age':[19,19,17],'height':[1.68,1.37,1.62]} df=pd.DataFrame(data)#字典鍵做為表頭列名 df.columns#查看列名df=pd.DataFrame(data,columns=['name','age','height','email'],index=range(14))#加一個(gè)空列,設(shè)置索引值數(shù)據(jù)選取操作 data={'name':['張三','李四','王五','趙六'],'age':[19,19,2017],'height':[1.68,1.37,1.621.80]} df=pd.DataFrame(data,columns=['name','age','height','email']) df['name']#查詢名字這一列 df.age df[['name']]#再套一個(gè)中括號可以把查詢的這一列變成表 df[['name','age']]#兩列值的dataframenames=df.name names[0]='jack'#實(shí)際上df會(huì)被修改。張三被改成jack復(fù)制舊表,對新表進(jìn)行操作 names=df.name.copy() name[0]='周八' df.columns#獲取列的索引 df.columns[1:3]#Index(['age','height'],dtype='object')加一列出生年月year import datetime df['year']=datetime.datetime.now().year -df.age #新增列出生年月刪除列主表不受影響 df.drop('year',axis=1) df.drop(['year','height'],axis=1) df.drop(df.columns[1::2],axis=1)#隔一列刪除一列loc定位 df.loc[1]#輸出李四這一列 df.loc[[1]]#變成dataframe的表 不知道索引值,要最后兩個(gè)數(shù)的name和age df.index[-2:] df.loc(df.index[-2:])#所有列 df.loc(df.index[-2:],['name','age'])df.shape #查看維度(4,4) df.loc[df.shape[0]]={'age':18,'name':'吳九','height':1.66,'year':0} #在最后一行插入數(shù)據(jù)df2=df.drop(2)# 刪除索引為2的行 df2.index=range(df2.shape[0])#重置索引iloc與loc的區(qū)別 iloc是物理索引,存在內(nèi)存里不能改變,loc是可以人為改變 df2.loc[2] df.iloc[2] df2.index=list('ABCD')#修改索引 df.iloc[1:3]#切片取數(shù)據(jù) df.iat[1,1]#通過坐標(biāo)軸取數(shù)據(jù),第一行第一列的數(shù)據(jù)通過比較運(yùn)算符篩選數(shù)據(jù) df2['height']>=1.65#返回True或者False df2[df2['height']>=1.65]#取出大于等于1.65的數(shù)據(jù) df2[(df2['height']>=1.65)&(df2['age']<=20)]#同時(shí)滿足兩個(gè)條件 query方法 df.quary('height>1.65 and age<=20') age=20 df.query('age<@age')#age是變量,@引進(jìn)變量 isin df['age'].isin([18,19])#是否有某些數(shù)據(jù) isin是否有18或者19歲的,返回TF df[df['age'].isin([18,19])]#取出符合條件的數(shù)據(jù)矩陣轉(zhuǎn)置 X.T #行變列,列變行## Pandas導(dǎo)入數(shù)據(jù)pd.read_table(./01.txt) pd.read_table(./02.txt)#tab鍵自動(dòng)識別隔開 pd.read_table(./03.txt,sep=':',header=None,names=['name','pwd','uid','gid','local','home','shell']) #原文件分隔符為:,設(shè)置sep=':'。header是指表頭不用txt的數(shù)據(jù)。names指定表頭CSV一般列與列之間用逗號分隔 pd.read_csv(./04.csv)excel pip3 install xlrd#安裝第三方模塊 pd.read_excel(./05.xlsx)html pip3 intall xlml#安裝 tables=pd.read_html('./06.html',header=0) #只會(huì)讀取table的值,把表頭設(shè)置在0的位置 tabless[0]#一共有兩張表,取出第一張 tables=pd.read_html('./06.html',header=0,attrs={'class':'mydata'}) #取出class為mydata的元素mysql pip3 install pymysql#安裝第三方軟件 con=pymysql.connect(host='localhost',username='root',password='123456',database='doubandb',charset='utf8',use_unicode=True) #鏈接數(shù)據(jù)庫 sql_cmd='select * from books2' #寫sql命令 df=pd.read_sql(sql_cmd,con) #按照命令讀取表的內(nèi)容 df.head(2) #顯示前兩行sort st=pd.Series(list('CAD'),index=3,1,2) #生成序列 st.sort_index()#通過索引進(jìn)行排序 st.sort_values()#通過值進(jìn)行排序 st.sort_values(ascending=False)#通過值進(jìn)行倒序排序arr=[[9,4,8],[4,6,5],[4,5,3]]#初始化一個(gè)數(shù)組 df=pd.DataFrame(arr,index=[0,2,1],columns='cab')#把數(shù)組變成表,設(shè)置索引列名 df.sort_index() df.sort_index(axis=1)#對列進(jìn)行排序 df.sort_values(by='c')#對dataframe的某一series進(jìn)行排序rank df.rank()#對值進(jìn)行排名merge import numpy as np df1=pd.DataFrame({'stu_no':['s1','s2','s3','s4','s5','s6','s7','s8'],'score':np.random.randint(50,100,size=8)} df2=pd.DataFrame({'stu_no':['s1','s2','s3','s5'],'name':['張三','李四','王五','趙六']} pd.merge(df1,df2,on='stu_no')#merge合并兩張表,類似inner join pd.merge(df1,df2,on='stu_no',how='left')#merge合并兩張表,類似左連接concat df1=pd.DataFrame(np.arange(1,5).reshape(2,-1)) df2=pd.DataFrame(np.zeros((2,2))) pd.concat([df1,df2])#縱向疊加,行數(shù)變多 pd.concat([df1,df2],axis=1)#列疊加異常值的分析 df.head()#查看前兩條 df.tail()#查看后兩條 df.info()#查看表的屬性(內(nèi)存占用,數(shù)據(jù)類型等等 df.describe()#查看mean count min等 df.mean()#平均值 df.count()#個(gè)數(shù) df.sum()#求和 df.sum(axis=1)#對列進(jìn)行求和 df.a#獲取a這一列 df.a.sum()#對a這一列進(jìn)行求和 df.std()#獲取標(biāo)準(zhǔn)差 體現(xiàn)波動(dòng) df.var()#獲取方差數(shù)據(jù)分組,透視表 df=pd.read_excel('./pandas中的數(shù)據(jù)分組與透視表.xlsx') grouped=df.groupby('類別') #以類別進(jìn)行分組,返回分組的對象 for name,data in grouped:print(name)print(data)#返回兩個(gè)類別的兩組表數(shù)據(jù) grouped['金額','數(shù)量'].sum()#對各個(gè)組的列屬性進(jìn)行求和 grouped['單價(jià)'].max() grouped['類別','名稱'].sum() grouped['單價(jià)'].max() grouped[['單價(jià)']].mean() #表 查看表的各個(gè)類別 grouped=df.groupby('類別') for name,data in grouped:print(name)print(data['名稱'].unique())對時(shí)間序列進(jìn)行的操作 import time time.time() time.localtime(415646546.556) time.strftime(%Y-%m-%d %H:%M:%S,time.localtime(1566218389))#2019-8-19 20:39:49 local=time.strptime('1987-08-22 16:53','%Y-%m-%d %H:%M') time.mktime(local)#測試經(jīng)歷的秒數(shù)from datetime import datetime now=datetime.now() now.year now.day#取出年月日 now.strftime(%Y-%m-%d %H:%M:%S)#2019-8-19 20:39:49Pandas時(shí)間序列 pd.date_range('2018-5-1','2018-10-1')#初始化時(shí)間序列 顯示出每一天,間隔頻率,天數(shù) pd.date_range('2018-5-1','2018-10-1',freq='w')#初始化時(shí)間序列 顯示出每一周,間隔頻率為周 #freq頻率: S秒T分H小時(shí)D天Q季度M月 pd.date_range('2018-5-1',freq='Q',period=10)#從2018-5-1開始10個(gè)季度生成日志 data={'time':pd.date_range('2019-8-19',freq='T',period=200000)'cpu':np.random.randn(200000)+10#生成200000個(gè)隨機(jī)cpu df=pd.DataFrame(data,columns=['time','cpu']) df.head() 現(xiàn)在是1分鐘采樣,改造dataframe讓時(shí)間作為索引,改成5分鐘一次作為索引,求5分鐘平均值 df.index=pd.to_datetime(df.time) df=df.drop('time',axis=1)#刪除多余的列 df.info()#查看時(shí)間索引 df['2019-09-01 08:00:00':'2019-09-01 08:10:00']#篩選數(shù)據(jù) df.groupby(df.index.date).mean()#通過日期分組求平均值 df.groupby(df.index.hour).mean() df.groupby(df.index.week).mean() df.resample('5T').mean()#重采樣 5分鐘一次

總結(jié)

以上是生活随笔為你收集整理的数据分析训练营-pandas的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。