python 數據分析(四)Pandas 統計分析基礎 (文本文件的讀寫 + DataFrame的常用屬性 + loc方法)

前言:統計分析是數據分析重要的組成部分,它幾乎貫穿了整個數據分析的流程。 應用統計方法,將定量與定性結合,進行的研究活動叫統計分析。統計分析除了 包含單一數值型特徵的數據集中趨勢、離散趨勢和峯度與偏度等統計知識外,還包含了多個特徵比較計算等知識。

一、讀寫不同數據源的數據


1. 文本文件的讀寫


(1)文本文件讀取


文本文件是一種由若干行字符構成的計算機文件,它是一種典型的順序文件。

這裏要介紹的是txt和csv兩種類型文件的讀取。


txt文件我們都很熟悉,常用的文本文檔。

csv 是一種逗號分隔的文件格式,因爲其分隔符不一定是逗號,又被稱爲字 符分隔文件,文件以純文本形式存儲表格數據(數字和文本)。
注:(1)CSV 文件根據其定義也是一種文本文件;(2)文本文件是字符分隔文件


① 使用 read_table 來讀取文本文件


pandas.read_table(filepath_or_buffer,sep=’\t’,header=’infer’, names=None,index_col=None,dtype=None,engine=None,nrows=None)

案例:

order = pd.read_table('meal_order_info.csv',sep=',',encoding='gbk')
print(order)

在這裏插入圖片描述


② 使用 read_csv 函數來讀取 csv 文件


pandas.read_csv(filepath_or_buffer,sep=’\t’,header=’infer’, names=None,index_col=None,dtype=None,engine=None,nrows=None)

案例:

order = pd.read_csv('meal_order_info.csv',encoding='gbk')
print(order)

在這裏插入圖片描述


③ read_table 和 read_csv 常用參數及其說明


在這裏插入圖片描述
以菜品訂單爲例,讀取訂單數據,並統計訂單數據條數
在這裏插入圖片描述

  • read_table 和 read_csv 函數中的 sep 參數是指定文本的分隔符的,如果分隔符指定錯誤,在讀取數據的時候,每一行數據將連成一片。在這裏插入圖片描述
  • header 參數是用來指定列名的,如果是 None 則會添加一個默認的列名。
  • encoding 代表文件的編碼格式,常用的編碼有 utf-8、utf-16、gbk、gb2312、 gb18030 等。如果編碼指定錯誤數據將無法讀取,IPython 解釋器會報解析錯誤。在這裏插入圖片描述
    正確案例:
    在這裏插入圖片描述

(2)文本文件存儲


文本文件的存儲和讀取類似,結構化數據可以通過 pandas 中的 to_csv 函數 實現以 csv 文件格式存儲文件


① to_csv寫入csv 文件


DataFrame.to_csv(path_or_buf=None, sep=,, na_rep=, columns=None, header=True, index=True,index_label=None,mode=’w’,encoding=None)

案例:

>>> df = pd.read_csv('data.csv', encoding='gbk', names=['第一列', '第二列', '第三列', '第四列'])
>>> df
第一列 第二列 第三列 第四列
姓名 語文 數學 英語
陳一 89 90 67
趙二 70 78 90
張三 87 86 79
李四 90 69 84
王五 78 80 69
df.to_csv('data_1.txt')

如果data_1.txt文件不存在,則會新建data_1.txt文件後再寫入,如果本來已存在該文件,則會清空後再寫入,寫入後data_1.txt文件內容如下:
在這裏插入圖片描述


② 參數說明


在這裏插入圖片描述


(3)讀取 Excel 文件


① Excel 文件讀取


pandas 提供了 read_excel 函數來讀取“xls”“xlsx”兩種 Excel 文件。

pandas.read_excel(io, sheetname=0, header=0, index_col=None, names=None, dtype=None)

案例:

detail = pd.read_excel('meal_order_detail.xlsx')
print(detail)

在這裏插入圖片描述


② 參數說明


在這裏插入圖片描述


(4)Excel 文件儲存


將文件存儲爲 Excel 文件,可以使用 to_excel 方法。其語法格式如下:

DataFrame.to_excel(excel_writer=None, sheet_name='None', na_rep=, header=True, index=True, index_label=None, mode=’w’, encoding=None)

案例:

>>> import pandas as pd
>>> pd.read_excel('data.xlsx')
姓名 語文 數學 英語
陳一 89.0 90.0 67.0
趙二 NaN 78.0 90.0
張三 87.0 NaN 79.0
李四 90.0 69.0 NaN
王五 78.0 80.0 69.0
>>> df = pd.read_excel('data.xlsx')
>>> df.to_excel('data_1.xlsx', na_rep='--')

在這裏插入圖片描述
to_csv 方法的常用參數基本一致,區別之處在於指定存儲文件的文件路徑參 數名稱爲 excel_writer,並且沒有 sep 參數,增加了一個 sheetnames 參數用來 指定存儲的 Excel sheet 的名稱,默認爲 sheet1。

excel_writer:必傳參數,指定需要寫入的excel文件,可以使表示路徑的字符串或者ExcelWriter類對象。


二、查看 DataFrame 的常用屬性


1. 基礎屬性


在這裏插入圖片描述


2. 基礎屬性的練習


import pandas as pd
detail = pd.read_excel('meal_order_detail.xlsx')
print('訂單詳情表的維度爲:',detail.shape)
print('訂單詳情表的軸:',detail.ndim)
print('訂單詳情表的元素個數:',detail.size)
print('訂單詳情表的列名:',detail.columns)
print('訂單詳情表的類型:',detail.dtypes)
print('訂單詳情表的索引:',detail.index)
print('訂單詳情表的元素:',detail.values)

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


三、DataFrame的操作


我們讀取文件都是<class 'pandas.core.frame.DataFrame'>DataFrame類型
在這裏插入圖片描述
初學:把表對象當成一個字典,結合numpy二維數組進行操作

detail = pd.read_excel('meal_order_detail.xlsx')
dishes_name = detail['dishes_name']
print(dishes_name)

在這裏插入圖片描述
查看訪問 DataFrame 中的數據——數據基本查看方式
對單列數據的訪問:DataFrame 的單列數據爲一個 Series。根據 DataFrame 的定義可以 知曉 DataFrame 是一個帶有標籤的二維數組,每個標籤相當每一列的列名。有以下兩種 方式來實現對單列數據的訪問

  • 以字典訪問某一個 key 的值的方式使用對應的列名,實現單列數據的訪問。
  • 以屬性的方式訪問,實現單列數據的訪問。(不建議使用,易引起混淆)

對某一列的某幾行訪問:訪問 DataFrame 中某一列的某幾行時,單獨一列的 DataFrame 可以視爲一個 Series(另一種 pandas 提供的類,可以看作是隻有一列的 DataFrame), 而訪問一個 Series 基本和訪問一個一維的 ndarray 相同。

對多列數據訪問:訪問 DataFrame 多列數據可以將多個列索引名稱視爲一個列表,同時 訪問 DataFrame 多列數據中的多行數據和訪問單列數據的多行數據方法基本相同。

對某一列的某幾行訪問:
以菜品訂單爲例,獲取 dishes_name 列下的前 5 個數據:

dishes_name5 = detail['dishes_name'][:5]

對某幾行訪問: 如果只是需要訪問 DataFrame 某幾行數據的實現方式則和上述的訪問多列多行相似,選 擇所有列,使用“:”代替即可


2. head 和 tail 獲取數據


head 和 tail 也可以得到多行數據,
但是用這兩種方法得到的數據都是從開始或者末尾獲 取的連續數據。默認參數爲訪問 5 行
只要在方法後方的“()”中填入訪問行數即可實現目標 行數的查看。

 print('訂單詳情表中前五行數據爲','\n',detail.head()) 
 print('訂單詳情表中後五個元素爲:','\n',detail.tail())

也可以指定獲取幾行

print('detail前2行數據:',detail.head(2))

在這裏插入圖片描述


3. loc方法—location


說明:可以獲取到指定行或列的數據
格式:表對象.loc[行,列]


(1)獲取所有表的數據


result = detail.loc[:,:]
# result等同於detail

在這裏插入圖片描述
注意:獲取的是所有行和所有列的數據


(2)獲取指定列的數據


result = detail.loc[:,['dishes_name','counts']]

在這裏插入圖片描述
注意:獲取所有行和指定列的數據


(3)獲取指定行的數據


result = detail.loc[:5,['dishes_name','counts']]
print(result)

在這裏插入圖片描述
注意:獲取指定列和前五行的數據


4. 相對不怎麼常用的獲取數據的方式


(1)eg:

print('表格中dishes_name前5行的內容:\n',detail['dishes_name'][:5])

(2)eg:

print('表格中所有列的1~6行的數據:\n',detail[:][1:6])

print(type(detail))#<class 'pandas.core.frame.DataFrame'>

DataFrame—數據結構—傾向於字典
凡是DataFrame類型對象,都可以使用列名獲取數據,eg:detail[‘dishes_name’]

print(type(detail['dishes_name']))#<class 'pandas.core.series.Series'>

Series–序列—表示一組序列數據–傾向於列表

print(type(detail['dishes_name']))#Series
print(type(detail[:]))#DataFrame,爲什麼不是Series?
# :取出的是所有的列所有數據

如:

print(type(detail.columns))
print(detail.columns)

在這裏插入圖片描述


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章