成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Pandas之旅(一): 讓我們把基礎(chǔ)知識(shí)一次擼完,申精干貨

tuomao / 3682人閱讀

為什么你需要pandas

大家好,今天想和大家分享一下有關(guān)pandas的學(xué)習(xí)新的,我因工作需要,從去年12月開始接觸這個(gè)非常好用的包,到現(xiàn)在為止也是算是熟悉了一些,因此發(fā)現(xiàn)了它的強(qiáng)大之處,特意想要和朋友們分享,特別是如果你每天和excel打交道,總是需要編寫一些vba函數(shù)或者對(duì)行列進(jìn)行g(shù)roupby啊,merge,join啊之類的,相信我,pandas會(huì)讓你解脫的。

好啦,閑話少說,這篇文章的基礎(chǔ)是假設(shè)你已經(jīng)大概聽說過了pandas的一些概念和用途,如果還大體上不太清楚的朋友們,可以去百度一下相關(guān)基礎(chǔ)介紹,本分主要分成四個(gè)部分:

從Dataframe說起 : 簡(jiǎn)單了解Df這種數(shù)據(jù)結(jié)構(gòu),了解如何創(chuàng)建一個(gè)Df

Dataframe基礎(chǔ)操作 :基于行,列,index選取數(shù)據(jù),新增數(shù)據(jù),刪除數(shù)據(jù)

Pandas 讀取 / 導(dǎo)出數(shù)據(jù): 了解如何對(duì)excel,csv,tsv等常見文件進(jìn)行讀取并導(dǎo)出

總結(jié): 精華部分,為大家總結(jié)一些非常實(shí)用的一些方法,并附帶源碼 ipynb以及py文件提供下載

1. 從Dataframe說起

首先,讓我們明確一點(diǎn),pandas這個(gè)包是在numpy的基礎(chǔ)上得到的,因此可能有的朋友會(huì)有疑問,要不要先學(xué)學(xué)numpy,我的個(gè)人建議是真的不太需要,因?yàn)榇蠖鄶?shù)的情況下基本用不到,當(dāng)然,如果你處理的是科學(xué)實(shí)驗(yàn)類型的數(shù)據(jù)的話,當(dāng)我沒說,我這里的應(yīng)用場(chǎng)景主要是一般類型的常見數(shù)據(jù),比如:

你是銷售經(jīng)理,經(jīng)常需要匯總各地區(qū)的銷售情況

你在銀行工作,不可避免的需要和數(shù)字,excel打交道

你每天有很多重復(fù)的工作,比如備份,計(jì)算兩表合并,分組,聚類等等。。。。。。

這種情況下,學(xué)習(xí)pandas會(huì)非常有用,這里我們說的數(shù)據(jù)都是二維的table,在pandas中也稱作dataframe。
pandas中其實(shí)一共有三種類型的常見數(shù)據(jù):

數(shù)據(jù)結(jié)構(gòu) 維度 說明
Series 1 類似list,一維數(shù)組
Data Frames 2 最常見的二維數(shù)據(jù)結(jié)構(gòu),excel,sql的表就是這個(gè)
Panel 3 用的很少,三維結(jié)構(gòu)

pandas主要包括三類數(shù)據(jù)結(jié)構(gòu),分別是:

Series:一維數(shù)組,與Numpy中的一維array類似。二者與Python基本的數(shù)據(jù)結(jié)構(gòu)List也很相近,其區(qū)別是:List中的元素可以是不同的數(shù)據(jù)類型,而Array和Series中則只允許存儲(chǔ)相同的數(shù)據(jù)類型,這樣可以更有效的使用內(nèi)存,提高運(yùn)算效率。

DataFrame:二維的表格型數(shù)據(jù)結(jié)構(gòu)。很多功能與R中的data.frame類似??梢詫ataFrame理解為Series的容器。以下的內(nèi)容主要以DataFrame為主。

Panel :三維的數(shù)組,可以理解為DataFrame的容器。

Pandas官網(wǎng),更多功能請(qǐng)參考 http://pandas-docs.github.io/...

這里我們主要聚焦在Dataframe上,一個(gè)dataframe長(zhǎng)的基本上如下這番模樣:

Name Age Mark
John 15 78
Mike 23 86
Mary 36 95

我們把這個(gè)簡(jiǎn)單的dataframe起個(gè)名字叫df,那么它包括的最基礎(chǔ)的元素有:

index:每行的索引,默認(rèn)是從0開始,比如上面的df[0] 就是指 John 15 78這一行,依次類推,當(dāng)然我們可以自己規(guī)定index,我以后會(huì)說

columns:列。這里就是指的是Name Age Mark 了

rows:行,df一共有3行

現(xiàn)在讓我們看一個(gè)完整的圖示:

Dataframe 是應(yīng)用最多也是最廣泛的數(shù)據(jù)結(jié)構(gòu),現(xiàn)在就讓我們開始學(xué)習(xí)創(chuàng)建一個(gè)dataframe吧~

1.1 創(chuàng)建Dataframe

創(chuàng)建一個(gè)Dataframe的方法有很多,總體上來說最常見的有及種:

創(chuàng)建空dataframe

利用dict創(chuàng)建

從其他數(shù)據(jù)源讀?。ňW(wǎng)站,excel,mysql等)

真實(shí)場(chǎng)景中大多數(shù)都是從其他數(shù)據(jù)源讀取,我們會(huì)在第3部分講到

創(chuàng)建空dataframe

這個(gè)非常簡(jiǎn)單:

import pandas as pd 
  
# Calling DataFrame constructor 
df = pd.DataFrame() 
  
print(df)

Out:Empty DataFrame
    Columns: []
    Index: []
利用dict創(chuàng)建(1)
import pandas as pd
print (f" Using {pd.__name__},Version {pd.__version__}")

Out: Using pandas , version 0.23.4

首先要import pandas 包,這里縮寫為pd,現(xiàn)在讓我們從dict創(chuàng)建一個(gè)dataframe:

>>> dict = {"name":["Tom", "Bob", "Mary", "James"], 
        "age": [18, 30, 25, 40], 
        "city":["Beijing", "ShangHai","GuangZhou", "ShenZhen"]} 
  
>>> df = pd.DataFrame(dict) 
>>> df

創(chuàng)建結(jié)果如下:

age city name
0 18 Beijing Tom
1 30 ShangHai Bob
2 25 GuangZhou Mary
3 40 ShenZhen James

很簡(jiǎn)單是不是,大家可能發(fā)現(xiàn)了,最左邊的東西就是index ,0,1,2,3,如果我們不指定會(huì)自動(dòng)生成從0默認(rèn)開始的序列,一直到你的dataframe的最后一行,類似于excel左邊的編號(hào)

利用dict創(chuàng)建(2)

這次讓我們創(chuàng)建的更加規(guī)范一些:

index = pd.Index(["Tom", "Bob", "Mary", "James"],name = "person")
cols = ["age","city"]
data = [[18,"Beijing"],
        [30,"ShangHai"],
        [25,"GuangZhou"],
        [40,"ShenZhen"]]

df =pd.DataFrame(index = index,data =data,columns = cols)
df
age city
person
Tom 18 Beijing
Bob 30 ShangHai
Mary 25 GuangZhou
James 40 ShenZhen

這里的主要區(qū)別在于我們主動(dòng)規(guī)定了‘name’列為索引。這種把一列默認(rèn)為索引的方式在excel和sql里都有,異曲同工

從其他數(shù)據(jù)源讀取(網(wǎng)站,excel,mysql等)

我會(huì)在第三部分介紹最常用的從excel,csv等讀取數(shù)據(jù)

總體來說,有關(guān)創(chuàng)建Dataframe的部分我們不用了解太多,因?yàn)閷?shí)際的場(chǎng)景基本不需要,都是直接從csv,tsv,sql,json等數(shù)據(jù)源直接獲取。

2. Dataframe 基礎(chǔ)操作

這里我們主要看一下基于索引,行,列,行和列的基礎(chǔ)操作,最后會(huì)為大家總結(jié)一下,現(xiàn)在拿剛剛我們創(chuàng)建過的dataframe為例:

age city name
0 18 Beijing Tom
1 30 ShangHai Bob
2 25 GuangZhou Mary
3 40 ShenZhen James
2.1 對(duì)columns的基礎(chǔ)操作
添加新列

添加一列非常簡(jiǎn)單:

df["country"] = "USA"
df
age city name country
0 18 Beijing Tom USA
1 30 ShangHai Bob USA
2 25 GuangZhou Mary USA
3 40 ShenZhen James USA
df["adress"] = df["country"]
df
age city name country adress
0 18 Beijing Tom USA USA
1 30 ShangHai Bob USA USA
2 25 GuangZhou Mary USA USA
3 40 ShenZhen James USA USA
修改列中的值

修改一個(gè)列的值也是很容易的,我們可以這樣做:

df["country"] = "China"
df
age city name country adress
0 18 Beijing Tom China USA
1 30 ShangHai Bob China USA
2 25 GuangZhou Mary China USA
3 40 ShenZhen James China USA

或者稍微多想一步:

df["adress"] = df["city"]+","+ df["country"]
df
age city name country adress
0 18 Beijing Tom China Beijing,China
1 30 ShangHai Bob China ShangHai,China
2 25 GuangZhou Mary China GuangZhou,China
3 40 ShenZhen James China ShenZhen,China
刪除列

我們可以應(yīng)用del或者drop函數(shù),如果是drop,要注意傳參時(shí)要加上axis = 1.這里簡(jiǎn)單和大家說明一下axis,這個(gè)東西其實(shí)就是指軸向,默認(rèn)的axis=0,是縱向,axis=1是橫向

df.drop("country",axis=1)
df
age city name adress
0 18 Beijing Tom Beijing,China
1 30 ShangHai Bob ShangHai,China
2 25 GuangZhou Mary GuangZhou,China
3 40 ShenZhen James ShenZhen,China
del df["city"]
df
age name adress
0 18 Tom Beijing,China
1 30 Bob ShangHai,China
2 25 Mary GuangZhou,China
3 40 James ShenZhen,China

這里有一點(diǎn)大家需要注意:

drop和del的結(jié)果是基于df的兩次多帶帶操作,并不是連續(xù)的

如果我們執(zhí)行完drop后,重新查看df,這時(shí)你會(huì)發(fā)現(xiàn)df沒有變化,因?yàn)闆]有真正的刪除

要想真正刪除,需要加上關(guān)鍵字 inplace = True

因此如果我們想要連續(xù)刪除country和city這兩列,改進(jìn)后的代碼如下:

df.drop("country",axis=1, inplace=True)
del df["city"]
df
age name adress
0 18 Tom Beijing,China
1 30 Bob ShangHai,China
2 25 Mary GuangZhou,China
3 40 James ShenZhen,China
選取列

這個(gè)非常簡(jiǎn)單,實(shí)現(xiàn)代碼如下:

df["age"]  # 選取age這一列


    0    18
    1    30
    2    25
    3    40
    Name: age, dtype: int64

或者這樣:

df.name
    0      Tom
    1      Bob
    2     Mary
    3    James
    Name: name, dtype: object

如果想要選取多個(gè)列也很容易,傳遞一個(gè)list就行啦:

df[["age","name"]]
age name
0 18 Tom
1 30 Bob
2 25 Mary
3 40 James

這里注意,和選取多帶帶一列不同,這里我們返回的類型是dataframe,之前的類型是series,我們可以這么理解,一列其實(shí)還是一維數(shù)組,但是兩列及以上是二維的了,當(dāng)然類型也變了

如果我們想要查看當(dāng)前的所有列:

df.columns

Out:Index([u"age", u"name", u"adress"], dtype="object")

如果我們想要重新對(duì)列進(jìn)行命名,基本有三種方法,大家挑一種自己喜歡的就行

傳遞list

傳遞dict

傳遞 axis

用list:

df.columns = ["Age","Name","Adress"]
df

用dict:

df.rename(index = str, columns = {"age":"Age","name":"Name","adress":"Adress"})  #這里index=str 有沒有都行,我這么做是為了規(guī)范
df

用axis:

df.rename(str.capitalize, axis="columns",inplace =True)
df

最后得到的效果是一樣的:

Age Name Adress
0 18 Tom Beijing,China
1 30 Bob ShangHai,China
2 25 Mary GuangZhou,China
3 40 James ShenZhen,China
根據(jù)條件給列賦值

我們現(xiàn)在想要根據(jù)人的年齡新增一列 Group,假設(shè)要求如下:

18歲以下的是年輕人

18-30的是中年人

30以上的是老年人

我們有很多方法可以實(shí)現(xiàn),先看一種,大家可以先忽視loc方法,這里傳達(dá)的就是基礎(chǔ)思路:

df["Group"] = "elderly"
df.loc[df["Age"]<=18, "Group"] = "young"
df.loc[(df["Age"] >18) & (df["Age"] <= 30), "Group"] = "middle_aged"
df
Age Name Adress Group
0 18 Tom Beijing,China young
1 30 Bob ShangHai,China middle_aged
2 25 Mary GuangZhou,China middle_aged
3 40 James ShenZhen,China elderly
2.2 對(duì) rows 的基礎(chǔ)操作
loc函數(shù) df.loc[row,column]

首先,大多數(shù)對(duì)于行的操作都可以通過loc函數(shù)實(shí)現(xiàn),比如我們想要選取全部的行,除了直接打出df外,可以使用df.loc[:]

df.loc[:]
Age Name Adress Group
0 18 Tom Beijing,China young
1 30 Bob ShangHai,China middle_aged
2 25 Mary GuangZhou,China middle_aged
3 40 James ShenZhen,China elderly
loc函數(shù)條件查詢
df.loc[df["Age"]>20]
Name Age Adress Group
1 Bob 30 ShangHai,China middle_aged
2 Mary 25 GuangZhou,China middle_aged
3 James 40 ShenZhen,China elderly
loc函數(shù)條件行列查詢
df.loc[df["Group"]=="middle_aged","Name"]

1     Bob
2    Mary
Name: Name, dtype: object
Where 查詢
filter_adult = df["Age"]>25
result = df.where(filter_adult)
result
Name Age Adress Group
0 NaN NaN NaN NaN
1 Bob 30.0 ShangHai,China middle_aged
2 NaN NaN NaN NaN
3 James 40.0 ShenZhen,China elderly
Query 篩選
# df.query("Age==30") 
df.query("Group=="middle_aged""and "Age>30" )
Name Age Adress Group
3 James 40 ShenZhen,China elderly
2.3 對(duì) Dataframe 的基礎(chǔ)了解

這里有很多有用的方法,可以幫助到大家大致了解數(shù)據(jù)的情況:

df.shape   # 了解行列情況
Out:(4, 4)
df.describe()   # 獲取可計(jì)算列基礎(chǔ)統(tǒng)計(jì)
Age
count 4.000000
mean 28.250000
std 9.251126
min 18.000000
25% 23.250000
50% 27.500000
75% 32.500000
max 40.000000
# df.head(3) #查看前三行數(shù)據(jù),默認(rèn)為5
df.tail(3)   #獲得最后三行數(shù)據(jù)
Name Age Adress Group
1 Bob 30 ShangHai,China middle_aged
2 Mary 25 GuangZhou,China middle_aged
3 James 40 ShenZhen,China elderly
3. Pandas讀取導(dǎo)出數(shù)據(jù)(csv)

Pandas 支持大部分常見數(shù)據(jù)文件讀取與存儲(chǔ)。一般清楚下,讀取文件的方法以 pd.read_ 開頭,而寫入文件的方法以 pd.to_ 開頭。這里我們開始熟悉一下最實(shí)用的對(duì)于csv文件的讀取寫入

寫入CSV
df.to_csv("person.csv",index=None,sep=",")
import os
os.getcwd()
Out:  "C:UsersE560"

這樣大家就可以在"C:UsersE560"的路徑下找到我們剛剛生成的csv文件了,這里我把index=None,舍棄了索引值

讀取CSV

首先我們確認(rèn)和python文件同一目錄下存在我們剛剛導(dǎo)出的person.csv文件,之后可以很容易的讀取了:

person = pd.read_csv("person.csv")
person
Name Age Adress Group
0 Tom 18 Beijing,China young
1 Bob 30 ShangHai,China middle_aged
2 Mary 25 GuangZhou,China middle_aged
3 James 40 ShenZhen,China elderly

這時(shí)我們發(fā)現(xiàn),即使我們讀取的csv文件沒有索引,但是pandas已經(jīng)默認(rèn)幫我們加上了

4. 總結(jié),資料下載

好了,現(xiàn)在大家對(duì)pandas的使用已經(jīng)有了基礎(chǔ)的印象,我給大家簡(jiǎn)單總結(jié)一下常用的方法:

使用標(biāo)簽選取數(shù)據(jù)
df.loc[行標(biāo)簽,列標(biāo)簽]
df.loc["Tom":"Mary"] #選取 Tom至Mary的所有行的數(shù)據(jù),Tom和Mary是index
df.loc[:,"city"] #選取 city 列的數(shù)據(jù)

df.loc 的第一個(gè)參數(shù)是行標(biāo)簽,第二個(gè)參數(shù)為列標(biāo)簽(可選參數(shù),默認(rèn)為所有列標(biāo)簽),兩個(gè)參數(shù)既可以是列表也可以是單個(gè)字符,如果兩個(gè)參數(shù)都為列表則返回的是 DataFrame,否則,則為 Series。

PS:loc為location的縮寫。

使用位置(index)選取數(shù)據(jù)
df.iloc[行位置,列位置]    
df.iloc[1,1] #選取第二行,第二列的值,返回的為單個(gè)值    
df.iloc[[0,2],:] #選取第一行及第三行的數(shù)據(jù)    
df.iloc[0:2,:] #選取第一行到第三行(不包含)的數(shù)據(jù)   
df.iloc[:,1] #選取所有記錄的第二列的值,返回的為一個(gè)Series   
df.iloc[1,:] #選取第一行數(shù)據(jù),返回的為一個(gè)Series

PS:iloc 則為 integer & location 的縮寫

通過邏輯指針進(jìn)行數(shù)據(jù)切片
df[邏輯條件]

df[df.age >= 18] #單個(gè)邏輯條件

df[(df.age >=18 ) & (df.country=="China") ] #多個(gè)邏輯條件組合
了解并掌握數(shù)據(jù)大致情況
方法 解釋
count 非na值的數(shù)量
describe 針對(duì)Series或個(gè)DataFrame列計(jì)算匯總統(tǒng)計(jì)
min、max 計(jì)算最小值和最大值
argmin、argmax 計(jì)算能夠獲取到最大值和最小值得索引位置(整數(shù))
idxmin、idxmax 計(jì)算能夠獲取到最大值和最小值得索引值
quantile 計(jì)算樣本的分位數(shù)(0到1)
sum 值的總和
mean 值得平均數(shù)
median 值得算術(shù)中位數(shù)(50%分位數(shù))
mad 根據(jù)平均值計(jì)算平均絕對(duì)離差
var 樣本值的方差
std 樣本值的標(biāo)準(zhǔn)差
skew 樣本值得偏度(三階矩)
kurt 樣本值得峰度(四階矩)
cumsum 樣本值得累計(jì)和
cummin,cummax 樣本值得累計(jì)最大值和累計(jì)最小值
cumprod 樣本值得累計(jì)積
diff 計(jì)算一階差分(對(duì)時(shí)間序列很有用)
pct_change 計(jì)算百分?jǐn)?shù)變化
常見讀取寫入數(shù)據(jù)
數(shù)據(jù)類型 讀取 寫入
CSV read_csv to_csv
JSON read_json to_json
HTML read_html to_html
EXCEL read_excel to_excel
SQL read_sql to_sql

好了,其實(shí)這些就是想要告訴大家如何學(xué)習(xí)pandas,沒有必要了解每一個(gè)方法,但是現(xiàn)在想必你知道pandas能實(shí)現(xiàn)的功能很多,這樣你有具體需求時(shí)只要詳細(xì)查詢一下文檔即可,接下來幾期我們會(huì)重點(diǎn)來看pandas里面對(duì)于df的各種操作,從簡(jiǎn)單的數(shù)據(jù)清理到類似于excel里面的vba,包括cancat,merge,join等等

下載

我把這一期的ipynb文件和py文件放到了GIthub上,大家如果想要下載可以點(diǎn)擊下面的鏈接:

Github倉庫地址: 點(diǎn)我下載

好啦,這一期就講這么多,希望大家能夠繼續(xù)支持我,完結(jié),撒花

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43298.html

相關(guān)文章

  • Pandas之旅(二): 有關(guān)數(shù)據(jù)清理的點(diǎn)點(diǎn)滴滴

    摘要:數(shù)據(jù)清洗大家好,這一期我將為大家?guī)砦业膶W(xué)習(xí)心得第二期數(shù)據(jù)清理。這一期我會(huì)和大家分享一些比較好用常見的清洗方法。首先還是讓我們來簡(jiǎn)單看一下本文將會(huì)用到的數(shù)據(jù)源這是一個(gè)超小型的房地產(chǎn)行業(yè)的數(shù)據(jù)集,大家會(huì)在文章最后找到下載地址。 數(shù)據(jù)清洗 大家好,這一期我將為大家?guī)砦业膒andas學(xué)習(xí)心得第二期:數(shù)據(jù)清理。這一步非常重要,一般在獲取數(shù)據(jù)源之后,我們緊接著就要開始這一步,以便為了之后的各種...

    wenyiweb 評(píng)論0 收藏0
  • Python 基礎(chǔ)起步 (八) 字典實(shí)用技巧大全,精干,必看!

    摘要:,同為小白的朋友們大家好,這期主要為大家?guī)碛嘘P(guān)字典的一些實(shí)用技巧。上篇筆記通過感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類型,這一期讓我們看看如何能更好的操作字典。 Hello ,同為小白的朋友們大家好,這期主要為大家?guī)碛嘘P(guān)字典的一些實(shí)用技巧。上篇筆記通過感人肺腑的老白讓大家認(rèn)識(shí)到了字典這么有用的數(shù)據(jù)類型,這一期讓我們看看如何能更好的操作字典。 基礎(chǔ)篇 下面我給大家來一個(gè)簡(jiǎn)單的...

    flybywind 評(píng)論0 收藏0
  • Pandas之旅(五): 構(gòu)建模型初入門:檢驗(yàn)數(shù)據(jù)致性

    摘要:如何根據(jù)需要?jiǎng)?chuàng)建簡(jiǎn)單模型大家好,今天這一期我想和大家分享有關(guān)于創(chuàng)建模型的部分,首先讓我們來看一個(gè)比較常見的場(chǎng)景你每天需要打開個(gè)進(jìn)行相同的操作,各種眼花繚亂的函數(shù)后老眼昏花。。。。 Pandas 如何根據(jù)需要?jiǎng)?chuàng)建簡(jiǎn)單模型 大家好,今天這一期我想和大家分享有關(guān)于pandas創(chuàng)建模型的部分,首先讓我們來看一個(gè)比較常見的場(chǎng)景: 你每天需要打開N個(gè)excel進(jìn)行相同的操作,各種眼花繚亂的VBA函...

    hqman 評(píng)論0 收藏0
  • Pandas之旅(七) 誰說pandas

    摘要:下面讓我們開始提速假設(shè)我們現(xiàn)在的電價(jià)是定值,不根據(jù)用電時(shí)間段來改變,那么中最快的方法那就是采用,這就是一個(gè)簡(jiǎn)單的矢量化操作示范。它基本是在中運(yùn)行最快的方式。 Pandas 加速 大家好,今天我們來看有關(guān)pandas加速的小技巧,不知道大家在剛剛接觸pandas的時(shí)候有沒有聽過如下的說法 pandas太慢了,運(yùn)行要等半天 其實(shí)我想說的是,慢不是pandas的錯(cuò),大家要知道pandas本身...

    genedna 評(píng)論0 收藏0
  • Pandas之旅(三)最實(shí)用的Merge, Join,Concat方法詳解

    摘要:基于上的我們還可以實(shí)現(xiàn)幾個(gè)基于的,還是老樣子,先讓我們創(chuàng)建兩個(gè)好了,現(xiàn)在我們想要實(shí)現(xiàn)兩個(gè)的,但是條件是通過的和的這樣我們也可以得到結(jié)果。 Merge, Join, Concat 大家好,我有回來啦,這周更新的有點(diǎn)慢,主要是因?yàn)槲腋铝藗€(gè)人簡(jiǎn)歷哈哈,如果感興趣的朋友可以去看看哈: 我的主頁 個(gè)人認(rèn)為還是很漂亮的~,不得不說,很多時(shí)候老外的設(shè)計(jì)能力還是很強(qiáng)。 好了,有點(diǎn)扯遠(yuǎn)了,這一期我想和...

    CloudwiseAPM 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<