為什么你需要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 |
添加新列
添加一列非常簡(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 |
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 |
這里有很多有用的方法,可以幫助到大家大致了解數(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 |
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
摘要:數(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ù)源之后,我們緊接著就要開始這一步,以便為了之后的各種...
摘要:,同為小白的朋友們大家好,這期主要為大家?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)單的...
摘要:如何根據(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函...
摘要:下面讓我們開始提速假設(shè)我們現(xiàn)在的電價(jià)是定值,不根據(jù)用電時(shí)間段來改變,那么中最快的方法那就是采用,這就是一個(gè)簡(jiǎn)單的矢量化操作示范。它基本是在中運(yùn)行最快的方式。 Pandas 加速 大家好,今天我們來看有關(guān)pandas加速的小技巧,不知道大家在剛剛接觸pandas的時(shí)候有沒有聽過如下的說法 pandas太慢了,運(yùn)行要等半天 其實(shí)我想說的是,慢不是pandas的錯(cuò),大家要知道pandas本身...
摘要:基于上的我們還可以實(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)了,這一期我想和...
閱讀 1529·2021-11-25 09:43
閱讀 4077·2021-11-15 11:37
閱讀 3208·2021-08-17 10:13
閱讀 3513·2019-08-30 14:16
閱讀 3545·2019-08-26 18:37
閱讀 2500·2019-08-26 11:56
閱讀 1142·2019-08-26 10:42
閱讀 622·2019-08-26 10:39