資料分析流程

2021-10-13 07:27:17 字數 4666 閱讀 2490

主要使用pandas資料報來處理資料,以及常用到的pandas裡的函式。在這裡我們需要引入庫:import pandas as pd

並且規定下面縮寫:

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檔案,抽取其中的tables**

pd.read_clipboard():從你的貼上板獲取內容,並傳給read_table()

pd.dataframe(dict):從字典物件匯入資料,key是列名,value是資料

函式功能

備註pd.read_csv讀取文字檔案

csv、tsv、txt等格式

pd.read_excel讀取電子**

xls或xlsx格式

pd.read_sql讀取資料庫資料

pymssqlpymysql模組的配合

df.to_csv寫入文字檔案

df為資料框物件

df.to_excel寫入電子**

df為資料框物件

df.to_sql寫入資料庫

df為資料框物件

# 讀入mysql資料庫資料

# 匯入第三方模組

import pymysql

# 連線mysql資料庫

conn = pymysql.connect(host=

'localhost'

, user=

'root'

, password=

'test'

, database=

'test'

, port=

3306

, charset=

'utf8'

)# 讀取資料

user = pd.read_sql(

'select * from topy'

, conn)

# 關閉連線

conn.close(

)# 資料輸出

user

# 資料讀取

sec_cars = pd.read_table(r'c:\users\administrator\desktop\sec_cars.csv'

, sep =

',')

# 預覽資料的前五行

sec_cars.head(

)# 檢視資料的行列數

print

('資料集的行列數:\n'

,sec_cars.shape)

# 檢視資料集每個變數的資料型別

print

('各變數的資料型別:\n'

,sec_cars.dtypes)

# 資料的描述性統計

sec_cars.describe(

)

df[col]:根據列名,並以series的形式返回列

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

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

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

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

df.iloc[0,0]:返回第一列的第乙個元素

# 資料讀入

df = pd.read_excel(r'c:\users\administrator\desktop\data_test05.xlsx'

)# 缺失觀測的檢測

print

('資料集中是否存在缺失值:\n'

,any

(df.isnull())

)# 刪除法之記錄刪除

df.dropna(

)# 刪除法之變數刪除

df.drop(

'age'

, axis =1)

# 替換法之前向替換

df.fillna(method =

'ffill'

)# 替換法之後向替換

df.fillna(method =

'bfill'

)# 替換法之常數替換

df.fillna(value =0)

# 替換法之統計值替換

df.fillna(value =

)

# 資料讀入

df = pd.read_excel(r'c:\users\administrator\desktop\data_test03.xlsx'

)# 將birthday變數轉換為日期型

df.birthday = pd.to_datetime(df.birthday,

format

='%y/%m/%d'

)# 將手機號轉換為字串

df.tel = df.tel.astype(

'str'

)# 新增年齡和工齡兩列

df['age'

]= pd.datetime.today(

).year - df.birthday.dt.year

df['workage'

]= pd.datetime.today(

).year - df.start_work.dt.year

# 將手機號中間四位隱藏起來

df.tel = df.tel.

(func =

lambda x : x.replace(x[3:

7],'****'))

# 取出郵箱的網域名稱

df['email_domain'

]= df.email.

(func =

lambda x : x.split(

'@')[1

])# 取出人員的專業資訊

df['profession'

]= df.other.

str.findall(

'專業:(.*?),'

)# 去除birthday、start_work和other變數

df.drop(

['birthday'

,'start_work'

,'other'

], axis =

1, inplace =

true

)

filter、sort和groupby
# 構造資料集df1和df2

df1 = pd.dataframe(

)df2 = pd.dataframe(

)# 資料集的縱向合併

pd.concat(

[df1,df2]

, keys =

['df1'

,'df2'])

# 如果df2資料集中的「姓名變數為name」

df2 = pd.dataframe(

)# 資料集的縱向合併

pd.concat(

[df1,df2]

)# 構造資料集

df3 = pd.dataframe(

)df4 = pd.dataframe(

)df5 = pd.dataframe(

)# 三表的資料連線

# 首先df3和df4連線

merge1 = pd.merge(left = df3, right = df4, how =

'left'

, left_on=

'id'

, right_on=

'id'

)merge1

# 再將連線結果與df5連線

merge2 = pd.merge(left = merge1, right = df5, how =

'left'

)merge2

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

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

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

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

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

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

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

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

資料分析流程

資料庫中沒有的資料,利用python進行資料清洗,將資料根據對應字段錄入資料庫。根據下浮率和 公式 利用資料庫中的資料進行視覺化,制定資料分析報告。暫時還不需要實現網頁的功能,軟體僅在公司內部使用。1 許部安排人員將上個月的所有商業標建立資料夾,按照投標檔案,中標檔案的方式,統一儲存。2 搭建mys...

1 資料分析流程

進入公司後發現公司內主要遵循了以下圖中的資料分析流程,名為crisp dm cross industry standard process for data mining。此為業界認可的用於指導資料探勘工作的方法。在具體實踐中,業務理解,資料理解是十分重要的部分,間接決定了資料準備的複雜度。建立模型...

資料分析簡單流程

基本統計分析又叫描述性統計分析,一般統計某個變數的最小值,第一四分位值,中值,第三四分位值,以及最大值。常用的統計指標 指標panda方法或屬性 計數size 最大值max 最小值min 求和sum 平均值mean 方差var 標準差std 顯示各個等分值 describe 根據分組字段,將分析物件...