pandas和Series使用

Series

由數(shù)組和列表創(chuàng)建Series是一個(gè)淺拷貝(只拷貝引用地址,不拷貝對(duì)象本身)對(duì)象數(shù)值變化鼎文,數(shù)組也變

  • from pandas import Series
    • 引入Series
  • Series([1,2,3,4,5],index=list("abcde"))
    • 創(chuàng)建和索引
  • Series({"a":1,"b":2,"c":3})
    • 由字典創(chuàng)建
  • s.values
    • 顯示值
  • s.index
    • 顯示索引
  • s[]
    • 按字典索引
  • s.ix
    • 顯示隱式都可
  • s.loc
    • 顯示索引
  • s.iloc
    • 隱式索引
  • s.size
    • 大小
  • s.shape
    • 形狀
  • pd.read_csv("./titanic.txt")
    • 讀取csv文件
  • 變量名.head(3)
    • 前幾條
  • 變量名.tail(10)
    • 最后幾條
  • pd.isnull()
    • 判斷是否為空
  • pd.notnull()
    • 判斷是否為空

DataFrame

dic = {
    "姓名":["狗蛋","劉德華","鹿晗","TF","張柏芝","謝霆鋒"],
    "語(yǔ)文":[120,130,140,110,110,100],
    "數(shù)學(xué)":[130,110,100,100,100,120],
    "外語(yǔ)":[120,130,123,125,112,143],
    "綜合":[230,240,254,234,100,100] 
}
df = DataFrame(dic,index=list("abcdef")) 

創(chuàng)建DataFrame

  • df.columns
    • 橫索引
  • df.index
    • 縱索引
  • df2.add(df1,fill_value=0)
    • fill_value參數(shù)在補(bǔ)用它的值去填補(bǔ)缺失的地方
    • (注意)原來(lái)既缺行又缺列的仍然補(bǔ)nan
  • df.cumsum()
  • ue.groupby(["contb_receipt_dt","party"])[["contb_receipt_amt"]].sum().unstack(level=1).cumsum().cumsum()
    • 分完組之后累計(jì)求和
Python Operator Pandas Method(s)
+ add()
- sub(), subtract()
* mul(), multiply()
/ truediv(), div(), divide()
// floordiv()
% mod()
** pow()

Series與DataFrame之間的運(yùn)算

- 使用Python操作符:以行為單位操作(參數(shù)必須是行)渔肩,對(duì)所有行都有效。(類似于numpy中二維數(shù)組與一維數(shù)組的運(yùn)算拇惋,但可能出現(xiàn)NaN)
- 使用pandas操作函數(shù):
    - axis=0:以列為單位操作(參數(shù)必須是列)周偎,對(duì)所有列都有效。
    - axis=1:以行為單位操作(參數(shù)必須是行)撑帖,對(duì)所有行都有效蓉坎。
  • df2.add(s_row,axis=1)

    • df2中的與s_row同樣的一行里面數(shù)值進(jìn)行相加。
  • np.nan(NaN)

  • np.nan(NaN)

    • np.nan是浮點(diǎn)類型胡嘿,能參與到計(jì)算中蛉艾。但計(jì)算的結(jié)果總是NaN。
    • 但可以使用np.nan*()函數(shù)來(lái)計(jì)算nan,此時(shí)視nan為0勿侯。
    • pandas中None與np.nan都視作np.nan
  • np.nansum(nd)

    • 視nan為0之后求和拓瞪。
  • pandas中None與np.nan的操作

  • df.isnull()

    • 判斷是否為空,按照dataframe形式顯示
  • df.notnull()

    • 與上述相反
  • df.isnull().all(axis=0)

    • 判斷每一列中的所有元素是否全為T(mén)rue助琐,如果是則為T(mén)rue
  • df.isnull().any(axis=0)

    • 判斷每一列中是否有為T(mén)rue的元素祭埂,如果有一個(gè)為T(mén)rue,則為T(mén)rue
  • df.dropna(axis=1,how="any")

    • axis 0 默認(rèn)兵钮,代表操作行 1 代表操作列
    • how "any"默認(rèn)只要有缺失就丟棄 "all"所有的都缺失才丟掉
  • df.fillna(1000)

    • 直接填補(bǔ)為nan的
  • df.fillna(method="bfill",axis=0)

    • 拿后面的行標(biāo)對(duì)應(yīng)的值填充到前面的nan位置
  • df.fillna(method="ffill",axis=0)

    • 拿前面的行標(biāo)對(duì)應(yīng)的值填充到前面的nan位置
  • 隱式構(gòu)造

  • s = Series(data=[100,98,89,90],
    index=[["張三","張三","李四","李四"],["期中","期末","期中","期末"],
    ["a","b","a","b"]])
    s

    • Series也可以創(chuàng)建多層索引
  • df = DataFrame(data=[100,98,89,90],
    index=[["張三","張三","李四","李四"],["期中","期末","期中","期末"],
    ["a","b","a","b"]],
    columns = ["python"]
    )
    df

    • DataFrame隱式構(gòu)造
  • 顯示構(gòu)造pd.MultiIndex

  • mindex =pd.MultiIndex.from_arrays([["a",'a','a','b','b','b'],
    ['一單元',"二單元","三單元",'一單元',"二單元","三單元"]])
    mindex

    • 使用數(shù)組
  • mindex = pd.MultiIndex.from_tuples([("河南","鄭州"),
    ("河南","洛陽(yáng)"),
    ("山東","濟(jì)南"),
    ("河北","石家莊"),
    ("北京","天安門(mén)"),
    ("四川","成都"),
    ("江蘇","南京")])

    • 注意:每個(gè)元組代表一個(gè)行(或列)的索引名蛆橡,索引名要用元組的元素來(lái)體現(xiàn)
      mindex
    • 使用tuple
  • mindex = pd.MultiIndex.from_product([["河南","山東"],['鄭州','濟(jì)南']])
    mindex

    • 使用product

索引的堆

  • df1.stack(level=1)
    • 使用stack()的時(shí)候,level等于哪一個(gè)掘譬,哪一個(gè)就消失泰演,出現(xiàn)在行里。
  • df.unstack(level=2)
    • 使用unstack()的時(shí)候葱轩,level等于哪一個(gè)粥血,哪一個(gè)就消失,出現(xiàn)在列里酿箭。

過(guò)濾

  • df.where(df>50,other=0)
    • 這個(gè)函數(shù)是根據(jù)條件來(lái)過(guò)濾,并將不符合的改成0

級(jí)聯(lián)

  • pd.concat([df1,df2])
    • 和np.concatenate一樣趾娃,優(yōu)先增加行數(shù)(默認(rèn)axis=0)
  • pd.concat([df1,df2],axis=1)
    • 增加列數(shù)
    • 注意index在級(jí)聯(lián)時(shí)可以重復(fù)
    • 也可以選擇忽略ignore_index缭嫡,重新索引
    • 不匹配指的是級(jí)聯(lián)的維度的索引不一致。例如縱向級(jí)聯(lián)時(shí)列索引不一致抬闷,橫向級(jí)聯(lián)時(shí)行索引不一致(通俗的講就是級(jí)聯(lián)完了索引是1231234這種妇蛀,并不是啟用統(tǒng)一的級(jí)聯(lián))
  • pd.concat([df1,df2],keys=["教學(xué)","品保"])
    • 使用多層索引 keys
  • pd.concat([df1,df3],axis=0,join="outer")
    • 外連接
    • 1、不匹配級(jí)聯(lián)在外連接的模式下要求如果axis=0行級(jí)聯(lián)列索引必須保持一致
    • axis=1列級(jí)聯(lián)行索引必須保持一致
    • 2笤成、如果不一致缺哪個(gè)索引就補(bǔ)全哪個(gè)索引
  • pd.concat([df1,df3],axis=0,join="inner")
    • 內(nèi)連接:只連接匹配的項(xiàng)
    • 內(nèi)連接在級(jí)聯(lián)的時(shí)候不一致的地方全部丟棄
  • pd.concat([df1,df4,df5],axis=1,join_axes=[df1.index])
    • 連接指定軸

合并

  • df1.merge(df3)
    • 使用pd.merge()合并時(shí)评架,會(huì)自動(dòng)根據(jù)兩者相同column名稱的那一列,作為key來(lái)進(jìn)行合并炕泳。
  • df1.merge(df5,on="name",suffixes=["實(shí)際","假的"])
    • 如果兩個(gè)表有多個(gè)相同的屬性纵诞,需要指定以哪一個(gè)屬性為基準(zhǔn)來(lái)合并
  • df1.merge(df6,left_on="name",right_on="姓名")
    • 如果兩個(gè)表沒(méi)有相同的屬性,可以左邊的表出一個(gè)屬性培遵,右邊的表出一個(gè)屬性浙芙,然后進(jìn)行合并
    • 這種合并兩個(gè)屬性不能并在一起
  • df1.merge(df6,right_index=True,left_index=True)
    • 用索引來(lái)合并
  • df1.merge(df7,how="inner")
    • 內(nèi)合并:只保留兩者都有的key(默認(rèn)模式)
  • df1.merge(df7,how="outer")
    • 外合并 how='outer':補(bǔ)NaN
  • df1.merge(df7,how="right")
  • df1.merge(df7,how="left")
    • 左和并:以左側(cè)為基準(zhǔn),左側(cè)有右側(cè)沒(méi)有補(bǔ)nan籽腕,左側(cè)沒(méi)有右側(cè)有去掉
    • 有合并:和上面相反

刪除重復(fù)元素

  • df.duplicated()
    • 返回值為一個(gè)Series記錄著每一行的重復(fù)情況嗡呼,如果某一行不是第一次出現(xiàn)就認(rèn)為他是重復(fù)
    • 返回是否重復(fù)的bool值
  • df.drop_duplicates(inplace=True)
    • 刪除重復(fù)數(shù)據(jù)

映射

  • df.replace({"red":"blue","green":20},inplace=True)
    • 把字典的鍵替換成值
  • df["h5"].map(lambda x : x-40)
    • 按照函數(shù)來(lái)替換
  • df.rename(columns={"外語(yǔ)":"English"},index=func)
    • 替換索引

異常值檢測(cè)和過(guò)濾

  • df.describe()
    • 顯示個(gè)數(shù),平均數(shù)皇耗,標(biāo)準(zhǔn)差南窗,最大值等信息

排序

  • np.random.permutation()
    • 函數(shù)隨機(jī)排序(隨機(jī)打亂)
  • df.take([1,0,1])
    • 按索引提取,一般與上個(gè)函數(shù)一起用
  • ue.sort_values(by=["contb_receipt_dt"])
    • 按照值排序
  • data.sort_index(axis=1,ascending=False)
    • 按照索引降序排列

數(shù)據(jù)聚合

  • price_mean = df.groupby(["item"])[["price"]].mean()
    • 分組后万伤,按照組進(jìn)行求和窒悔,平均等操作
  • price_mean.round(2)
    • round讓結(jié)果在輸出的保留幾位小數(shù)
  • df.groupby(["color"]).transform(sum)
    • 高級(jí)數(shù)據(jù)聚合(顯示樣式有區(qū)別)
  • df.groupby(["color"]).apply(sum)
    • 高級(jí)數(shù)據(jù)聚合(顯示樣式有區(qū)別)
  • 轉(zhuǎn)換日期類型

  • pd.to_datetime(ue["contb_receipt_dt"])
    • 從字符串類型轉(zhuǎn)到日期類型
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市壕翩,隨后出現(xiàn)的幾起案子蛉迹,更是在濱河造成了極大的恐慌,老刑警劉巖放妈,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件北救,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芜抒,警方通過(guò)查閱死者的電腦和手機(jī)珍策,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宅倒,“玉大人攘宙,你說(shuō)我怎么就攤上這事」涨ǎ” “怎么了蹭劈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)线召。 經(jīng)常有香客問(wèn)我铺韧,道長(zhǎng),這世上最難降的妖魔是什么缓淹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任哈打,我火速辦了婚禮,結(jié)果婚禮上讯壶,老公的妹妹穿的比我還像新娘料仗。我一直安慰自己,他們只是感情好伏蚊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布立轧。 她就那樣靜靜地躺著,像睡著了一般躏吊。 火紅的嫁衣襯著肌膚如雪肺孵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天颜阐,我揣著相機(jī)與錄音平窘,去河邊找鬼。 笑死凳怨,一個(gè)胖子當(dāng)著我的面吹牛瑰艘,可吹牛的內(nèi)容都是我干的是鬼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼紫新,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼均蜜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起芒率,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤囤耳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后偶芍,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體充择,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年匪蟀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了椎麦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡材彪,死狀恐怖观挎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情段化,我是刑警寧澤嘁捷,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站显熏,受9級(jí)特大地震影響雄嚣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佃延,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夷磕。 院中可真熱鬧履肃,春花似錦、人聲如沸坐桩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绵跷。三九已至膘螟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碾局,已是汗流浹背荆残。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留净当,地道東北人内斯。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓蕴潦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親俘闯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子潭苞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容