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 ...