Pandas 筆記(一)Pamdas簡介和常用功能

2021-08-28 13:04:33 字數 3917 閱讀 1065

資料結構

整體上劃分pandas有兩種資料結構,series(一維的)和dataframe(二維的)

dataframe的建立:可以使用以下建構函式建立 -pandas.dataframe( data, index, columns, dtype, copy)

包匯入:

一般我們需要做如下匯入,numpy和pandas一般需要聯合使用,並且最好匯入的順序是pandas先導入,不然有時候會報錯(為啥報錯還有待研究):

import  pandas as pd

inport numpy as np

資料匯入:pd.read_csv(filename):從csv檔案匯入資料

pd.read_table(filename):從限定分隔符的文字檔案匯入資料

pd.read_excel(filename):從excel檔案匯入資料

pd.read_sql(query, connection_object):從sql表/庫匯入資料

pd.read_json(json_string):從json格式的字串匯入資料

pd.read_html(url):解析url、字串或者html檔案

pd.read_clipboard():從貼上板獲取內容

pd.dataframe(dict):從字典物件匯入資料

資料匯出:

df.to_csv(filename):匯出資料到csv檔案

df.to_excel(filename):匯出資料到excel檔案

df.to_sql(table_name, connection_object):匯出資料到sql表

df.to_json(filename):以json格式匯出資料到文字檔案

資料檢視:

資料選取:

df[col]:根據列名,並以series的形式返回列-----> 例:df[『列名』]

df[[col1, col2]]:以dataframe形式返回多列

s.iloc[0]:按位置選取資料

s.loc[『index_one』]:按索引選取資料

df.iloc[0,:]:返回第一行

資料清洗:

df.columns = [『a』,『b』,『c』]:重新命名列名

pd.isnull():檢查dataframe物件中的空值,並返回乙個boolean陣列

pd.notnull():檢查dataframe物件中的非空值,並返回乙個boolean陣列

df.dropna():刪除所有包含空值的行

df.fillna(x):用x替換dataframe物件中所有的空值

s.astype(float):將series中的資料型別更改為float型別

s.replace(1,『one』):用『one』代替所有等於1的值

df.rename(columns=lambda x: x + 1):批量更改列名

df.set_index(『column_one』):更改索引列

資料處理:filter, sort, groupby

資料合併:

資料統計:

df.describe():檢視資料值列的匯**計

df.mean():返回所有列的均值

df.corr():返回列與列之間的相關係數

df.count():返回每一列中的非空值的個數

df.max():返回每一列的最大值

df.min():返回每一列的最小值

df.median():返回每一列的中位數

df.std():返回每一列的標準差

常用函式:

df.astypes: 資料格式轉換

df.value_counts:相同數值的個數統計

df.hist(): 畫直方圖

df.get_dummies: one-hot編碼,將型別格式的屬性轉換成矩陣型的屬性。比如:三種顏色rgb,紅色編碼為[1 0 0]

例項分析: 以注釋形式在**中標註了

import pandas as pd

import numpy as np

from hmmlearn import hmm

#導包#設定時間為了看函式的執行時間 優化函式

start_time = pd.datetime.now()

print(start_time)

#匯入資料,去重,過濾名字為『-』的,改日期型別

def get_hmm_df(file_name):

#讀檔案

df = pd.read_csv(file_name)

#設定列名

df.columns = ['時間','使用者全名','元件','事件']

#去重df = df[['時間','使用者全名','元件']]

df = df.drop_duplicates(subset=none, keep='last')

#元件為空的資料去掉

df = df[df['元件'].notnull()]

df = df[df['使用者全名']!='-']

df['時間'] = pd.to_datetime(df['時間'])

#建立**字典,新建事件**列

df_fact = df[['元件']]

df_fact = df_fact.drop_duplicates(subset=none, keep='last', inplace=false)

key_dic = {}

for i in range(df_fact.shape[0]):

key = df_fact.iat[i,0]

key_dic[key] = i

df.sort_values(by=['使用者全名','時間'],inplace=true)

#建立索引為人名的字典

df_name = df[['使用者全名']]

df_name = df_name.drop_duplicates(subset=none, keep='last', inplace=false)

dic = {}

#shape[0] 這塊是說上面吧使用者名稱去重了,拿到不同名的資料作為乙個資料項,張三李四等.

for i in range(df_name.shape[0]):

key = df_name.iat[i,0]

dic[key] =

#填充字典,得到結果是

#   將張三的其他你需要重複資訊填入裡邊

for i in range(1,df.shape[0]):

time_delta = df.iat[i,0]-df.iat[i-1,0]

if (time_delta.seconds <= 3600) or (df.iat[i,1] != df.iat[i-1,1]):#換人了,或者同乙個人沒過時

if time_delta.seconds > 3600 and (df.iat[i,1] == df.iat[i-1,1]):#過時了,且同乙個人

# 獲取x2和len_x

x2_bic_data = [dic[i][j] for i in dic for j in range(len(dic[i]))]

len_x = [len(i) for i in x2_bic_data]

x2 = [[j] for i in x2_bic_data for j in i]

return df,df_fact,df_name,dic,x2,len_x

finish_time = pd.datetime.now()

print(finish_time)

Pandas學習筆記 Pandas概覽(一)

pandas是python的核心資料分析支援庫,提供了快速 靈活 明確的資料結構,旨在簡單 直觀的處理關係型 資料型的資料。pandas適用於處理以下型別的資料 維數名稱描述1 series 帶標籤的一維同構陣列 2dataframe 帶標籤的,大小可變的,二維異構 pandas資料結構就像是低維資...

pandas 第一列 pandas筆記(一)

最近在學習pandas,在這裡記錄一下筆記。一 建立pandas二維陣列 import pandas as pdimport numpy as nps pd.date range 20200101 periods 6 df pd.dataframe np.random.randn 6,4 index...

pandas學習筆記(一)

series是帶有標籤的一維陣列,可以儲存任何資料型別 整數,字串,浮點數,python物件等 軸標籤統稱為索引 ar np.random.rand 5 pd.series ar,index list abcde index是為資料新增索引,用列表的形式 s pd.series ar print a...