主要使用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
讀取資料庫資料
需pymssql
或pymysql
模組的配合
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 根據分組字段,將分析物件...