阿里雲02--Pandas快速入門課程筆記--基礎篇

本文內容來自阿里雲Pandas快速入門
本文所用代碼。已經上傳Github:代碼下載點擊此處

Pandas

基礎處理

  • Pandas介紹
  • 核心數據結構
    • DataFrame
    • Panel
    • Series
  • 基本操作
  • 運算
  • 繪圖
  • 文件的讀取與存儲

高級處理

  • List item

4.1 Pandas 介紹

4.1.1 Pandas 介紹

  • Pandas (panel data analysis)pannel 面板數據庫,源自計量經濟學,用來處理三維數據。
  • 以NumPy爲基礎,借力NumPy在計算方面性能高的優勢。
  • 獨特的數據結構。

4.1.2 爲什麼使用Pandas?

  • 便捷的數據處理能力;例如處理缺失數據
  • 讀取文件方便;支持字符串等多種數據類型的讀取
  • 封裝了 matplolib、NumPy的畫圖和計算

4.1.3 DataFrame

結構: DataFrame對象是既有行索引,又有列索引的二維數組。

  • 行索引:表明不同行,橫向索引,參數爲index
  • 列索引:表明不同列,縱向索引,參數爲columns
    屬性:
  • shape
  • index
  • columns
  • values
  • 轉置.T
    方法:# 可用來快速查看數據,當數據量比較大的時候。
  • head() # 默認前五行
  • tail() # 默認後五行
    DataFrame索引的設置
  • 1)修改行列索引
  • 2)重設索引
  • 3)設置新索引
    2 Panel
  • 常把Panel看作是DataFrame的容器
    3 Series
  • 帶索引的一維數組,series結構只有行索引。
  • 屬性
    • index
    • values

總結:

  • DataFrame是Series的容器
  • Panel是DataFrame的容器
# 創建一個符合正態分佈的十隻股票五天的漲跌幅數據
stock_change = np.random.normal(0, 1, (10, 5))

# 查看numpy創建的stock_change
array([[-0.78217422,  0.55843885, -1.52214351,  1.13126992, -1.38267547],
       [-1.30626036, -0.58487159, -0.0305207 ,  1.0450732 , -0.59120378],
       [ 2.25801794,  1.0116284 , -0.49409647, -1.27816253,  1.74229943],
       [ 0.06727762,  1.41381828,  1.48130795,  1.40653067, -1.3991669 ],
       [-2.29712979,  0.03264761,  0.50069174, -0.03275081, -0.30891757],
       [-0.7156338 ,  1.65142142, -0.61900504, -0.59917041, -1.45358826],
       [-2.21144185, -0.95233881,  0.44246166, -0.11327413,  1.57217482],
       [-1.22463947,  0.12924767,  1.4210064 , -1.93627664,  1.08923403],
       [-0.83111914, -1.34418871, -0.86708152,  1.41309277, -0.35246175],
       [-0.76326977,  0.44256111,  0.63045517,  0.99139858,  1.19290955]])

pandas DataFrame
在這裏插入圖片描述
給股票漲跌幅數據添加行索引

在這裏插入圖片描述
添加列索引
在這裏插入圖片描述
屬性
在這裏插入圖片描述
不能單獨修改索引,需要重新構造新的索引。
在這裏插入圖片描述
正確修改索引值
在這裏插入圖片描述
重設索引,原索引默認不丟棄

  • set_index(keys, drop=True)
    • keys:列索引名或者列索引名稱的列表。
    • drop:boole,default True。當作新的索引,刪除原來的索引列。

在這裏插入圖片描述
丟棄原索引
在這裏插入圖片描述
使用字典生成DataFrame
設置新的索引
在這裏插入圖片描述
在這裏插入圖片描述
設置多個索引,以年和月份
在這裏插入圖片描述
在這裏插入圖片描述

4.1.4 MultiIndex與Panel

MultiIndex

  • index屬性
    • naems:levels的名稱
    • leves:每個level的元組值

Panel

  • class pandas.Panel(data=None, items=None, major_axis=None, minor_axis=None, copy=False, dtype=None)
    • 存儲三維數組的Panel結構

運行以下代碼出現錯誤,因爲Pandas從版本0.20.0開始棄用Panel,我安裝的是pandas1.0.1,已經棄用。推薦使用DataFrame,截圖來自課程。

TypeError: object() takes no parameters
p = pd.Panel(np.arange(24).reshape(4,3,2),items=list("ABCD"),
             major_axis=pd.date_range("20130101", periods=3),
             minor_axis=["first","second"])
# 從不同維度查看數據
p["A"]
p["D"]

p.major_xs("2013-01-01")
p.minor_xs("first")

在這裏插入圖片描述
在這裏插入圖片描述
思考:如何獲取dataframe中某隻股票的不同時間的數據?這樣的結構是什麼?

4.1.5 Series

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

4.2 基本數據操作

4.2.1 索引操作

  • 1)直接索引
    - 先列後行
  • 2)按名字索引
    • loc
  • 3)按數字索引
    • iloc
  • 4)組合索引
    • 數字、名字

因爲課程沒有提供stock_day.csv等資料的下載,所以我從github上的其他工程裏找到了這個股票數據,地址:stock_day.csv數據來源
只需要下載data文件夾即可,可以使用downgit下載。DownGit 鏈接 需要爬,你懂的!需要這個文件的,留郵箱,我發過去。

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

4.2.2 賦值操作

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

4.2.3 排序操作

  • 對內容排序
    • DataFrame
    • Series
  • 對索引排序
    • DataFrame
    • Series
df.sort_values(key=, ascending=)
	"""
	key:單個鍵或者多個鍵進行排序,默認升序;
	ascending = False:降序
	ascending = True:升序
	"""

單字段排序
在這裏插入圖片描述
多字段排序
在這裏插入圖片描述
使用sort_index()方法進行排序
在這裏插入圖片描述
在這裏插入圖片描述

4.3 DataFrame運算

  • 算數
    • 加減乘除
    • add()、sub()
  • 邏輯
    • 邏輯運算符
      • 可以進行布爾索引
    • 邏輯運算函數
      • query()
      • isin()
  • 統計
    • sum mean median min max mode abs prod std var idxmax
    • describe()
    • idxmax()/idxmin()==np.argmax()/argmin()
    • 累計統計函數
  • 自定義
    • apply(func, axis=0) func:自定義函數 axis:默認是列,axis=1爲進行行運算。

4.3.1 算術運算

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

4.3.2 邏輯運算

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

4.3.3 統計運算

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

4.3.4 累計統計函數

在這裏插入圖片描述

4.3.5 自定義運算

在這裏插入圖片描述

4.4 Pandas繪圖

  • sr.plot()
  • DataFrame.plot(x=None,y=None,kind="line)
DataFrame.plot(self, *args, **kwargs)[source]
Make plots of Series or DataFrame.

Uses the backend specified by the option plotting.backend. By default, matplotlib is used.
"""
Parameters
dataSeries or DataFrame
The object for which the method is called.

xlabel or position, default None
Only used if data is a DataFrame.

ylabel, position or list of label, positions, default None
Allows plotting of one column versus another. Only used if data is a DataFrame.
kindstr
The kind of plot to produce:
‘line’ : line plot (default)
‘bar’ : vertical bar plot
‘barh’ : horizontal bar plot
‘hist’ : histogram
‘box’ : boxplot
‘kde’ : Kernel Density Estimation plot
‘density’ : same as ‘kde’
‘area’ : area plot
‘pie’ : pie plot
‘scatter’ : scatter plot
‘hexbin’ : hexbin plot.

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

4.5 文件的讀取與存儲

4.5.1 CSV文件

在這裏插入圖片描述

  • read_csv(path) --讀取文件

    • usecols
    • names
  • DataFrame.to_csv --寫入文件

    • columns
    • index=False
      在這裏插入圖片描述
      在這裏插入圖片描述
      在這裏插入圖片描述

4.5.2 HDF5文件

  • 存儲 三維數據的文件
    • key1 DataFrame1二維數據
    • key2 DataFrame2二維數據
  • read_hdf(path, key=)

4.5.3 JSON文件

  • pd.read_json(path)
    • orient=“records”
    • lines=True
  • df.to_json
    • orient=“records”
    • lines=True

在這裏插入圖片描述

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