Task1 pandas基礎學習筆記

2021-10-05 06:47:28 字數 3950 閱讀 5770

pandas應用的主要方向在於對資料的整理,pandas基於numpy,具有十分強大的資料整合功能,在生成series及dataframe時,都以二維列表的形式展現,下面主要介紹各種基本函式

為了方便,使用head()函式,使用該函式提取前5個資料,比較具有代表性

1.csv檔案

df = pd.read_csv(

'data/table.csv'

).head(

)#讀取

df.to_csv(

'data/table.csv'

, index=

false

)#寫入,並去掉行索引

2.txt檔案

df_txt = pd.read_table(

'data/table.txt'

, sep=

'_')

#sep為分隔符引數

3.xls或xlsx格式

df_excel = pd.read_excel(

'data/table.xlsx'

).head(

)#讀取

df.to_excel(

'data/new_table2.xlsx'

, sheet_name=

'sheet1'

)#寫入

series基本的結構由索引值(index)及值(values)構成,一般為n*2列的列表,其他屬性還包括名字(name),型別(dtype)

1.建立乙個series列表:

#	第一種方法(一般)

list_1 = np.random.randn(5)

#可以隨機生成

list_2 =[1

,2,3

,4,5

]#也可以自己寫

data = pd.series(list_1,index=

['a'

,'b'

,'c'

,'d'

,'e'

],name=

'這是乙個series'

,dtype=

'float64'

)# 第二種方法(根據字典建立)

dict_data =

data = pd.series(dict_data)

data.index =

['d'

,'e'

,'b'

,'c'

,'a'

]#更換索引值

2.series列表基本的屬性:

data.values

data.name

data.index

data.dtype

len(data)

#返回data的長度

3.series中的具體值:

data[

'a']

#根據索引值定位值

data[

['a'

,'b']]

#多個值

data[0:

2]#對data進行切片

data.value_counts(

)#計算重複元素出現的次數

# 判斷某個索引值是否存在

print

('a'

in data)

#返回乙個bool值

# 檢測缺失資料

print

(data.isnull(

))

4.series可以呼叫很多的函式,這些函式支援numpy運算

dataframe是series的公升級版,series中乙個索引值對應乙個值,而在dataframe中,乙個索引值對應很多種類的值,因此資訊量更加龐大

1.建立dataframe

df = pd.dataframe(

,index=

list

('一二三四五'))

# 也可根據字典建立

dict_df =

df = pd.dataframe(dict_df)

2.具體的操作

#	可以指定排練順序

df = pd.dataframe(dict_df, columns=

['col2'

,'col1'

,'col3'])

print

(data.columns)

#可檢視列名稱

# 修改行或列名

df.rename(index=

,columns=

)# 索引對齊特性(會根據索引值進行計算)

df1 = pd.dataframe(

,index=[1

,2,3

])df2 = pd.dataframe(

,index=[3

,1,2

])df1-df2

# 列的刪除

df.drop(index=

'五',columns=

'col1'

, inplace=

true

)#設定inplace=true後會直接在原dataframe中改動

del df[

'col1'

]#刪掉col1這一列

df.pop(

'col1'

)#與python中pop相似,會返回刪除的列,並同時在原dataframe上進行修改

# 列的新增

df1.assign(c=pd.series(

list

('def'))

)#不會對原dataframe做修改,相當於生成乙個新的dataframe

# 根據型別選擇列

df.select_dtypes(include=

['number'])

.head(

)#把值是數字的選擇出來

df.select_dtypes(include=

['float'])

.head(

)#把值是浮點數的選擇出來

print

(pd.merge(data1,data2,left_on=

'lkey'

,right_on=

'rkey'

))

兩個dataframe合併

#	兩個dataframe進行合併,不指定連線方式,則取交集

data1 = pd.dataframe(

)data2 = pd.dataframe(

)print

(pd.merge(data1,data2)

)# 新增引數

print

(pd.merge(data1,data2,how=

'outer'))

# 以誰為準

how=

'left'

how=

'right'

#兩個dataframe進行合併,指定連線的列名稱

data1 = pd.dataframe(

)data2 = pd.dataframe(

)print

(pd.merge(data1,data2,on=

'key'))

#分別指定

data1 = pd.dataframe(

)data2 = pd.dataframe(

)print

(pd.merge(data1,data2,left_on=

'lkey'

,right_on=

'rkey'

))

3.dataframe與series

將series轉換為dataframe

s = df.mean(

)s.to_frame(

)

pandas基礎學習 Task06缺失值處理

import pandas as pd import numpy as np df pd.read csv data table missing.csv df.head 一 缺失觀測及其型別 了解缺失資訊 a isna和notna方法 對series使用會返回布林列表 df physics isna...

pandas學習 Task05合併

問題二 merge ordered和merge asof的作用是什麼?和merge是什麼關係?merge ordered 根據官方說明,適用與帶時間序列的資料,自帶ffill bfill 引數,可以方便填充 merge asof 模糊匹配版的merge 問題三 請構造乙個多級索引與多級索引合併的例子...

pandas組隊學習 task7

使用isna函式,返回值為每個位置是否缺失的邏輯變數。檢視某一列缺失的行,可以根據isna的返回值進行索引,例如 df df.height.isna head 如果要檢視多個列的情況,可以使用any和all。例如,isna all檢視三個列同時缺失 sub set df height weight ...