python学习与数据挖掘_Python学习之数据挖掘(三)
Pandas
基礎處理
Pandas是什么?為什么用?
核心數據結構
DataFrame
Panel
Series
基本操作
運算
畫圖
文件的讀取與存儲
高級處理
4.1Pandas介紹
4.1.1 Pandas介紹 - 數據處理工具
panel + data + analysis
panel面板數據 - 計量經濟學 三維數據
4.1.2 為什么使用Pandas
便捷的數據處理能力
讀取文件方便
封裝了Matplotlib、Numpy的畫圖和計算
4.1.3 DataFrame
結構:既有行索引,又有列索引的二維數組
屬性:
shape
index
columns
values
T
方法:
head()
tail()
3 DataFrame索引的設置
1)修改行列索引值
2)重設索引
3)設置新索引
2 Panel
DataFrame的容器
3 Series
帶索引的一維數組
屬性
index
values
總結:
DataFrame是Series的容器
Panel是DataFrame的容器
4.2 基本數據操作
4.2.1 索引操作
1)直接索引
先列后行
2)按名字索引
loc
3)按數字索引
iloc
4)組合索引
數字、名字
4.2.3 排序
對內容排序
dataframe
series
對索引排序
dataframe
series
4.3 DataFrame運算
算術運算
邏輯運算
邏輯運算符
布爾索引
邏輯運算函數
query()
isin()
統計運算
min max mean median var std
np.argmax()
np.argmin()
自定義運算
apply(func, axis=0)True
func:自定義函數
4.4 Pandas畫圖
sr.plot()
4.5 文件讀取與存儲
4.5.1 CSV
pd.read_csv(path)
usecols=
names=
dataframe.to_csv(path)
columns=[]
index=False
header=False
4.5.2 HDF5、
hdf5 存儲3維數據的文件
key1 dataframe1二維數據
key2 dataframe2二維數據
pd.read_hdf(path, key=)
df.to_hdf(path, key=)
4.5.3 JSON
pd.read_json(path)
orient="records"
lines=True
df.to_json(patn)
orient="records"
lines=True
案例1:pandas數據幀DataFrame
# 數據幀DataFrame
import numpy as np
import pandas as pd
# 創建一個符合正態分布的10個股票5天的漲跌幅數據
stock_change = np.random.normal(0, 1, (10, 5))
print(pd.DataFrame(stock_change))
# 添加行索引
stock = ["股票{}".format(i) for i in range(10)]
print(pd.DataFrame(stock_change, index=stock))
# 添加列索引
date = pd.date_range(start="20180101", periods=5, freq="B")
data = pd.DataFrame(stock_change, index=stock, columns=date)
print(data)
# DataFrame的屬性
print(data.shape)
# 行列表
print(data.index)
# 列列表
print(data.columns)
# ndarray
print(data.values)
# 轉置
print(data.T)
# 前三條
print(data.head(3))
# 后三條
print(data.tail(3))
# 修改行列索引值
stock_ = ["股票_{}".format(i) for i in range(10)]
data.index = stock_
print(data.index)
# 重設索引
print(data.reset_index(drop=False))
# 設置新索引
df = pd.DataFrame({'month': [1, 4, 7, 10],
'year': [2012, 2014, 2013, 2014],
'sale':[55, 40, 84, 31]})
# 以月份設置新的索引
print(df.set_index("month", drop=True))
# 設置多個索引,以年和月份
new_df = df.set_index(["year", "month"])
print(new_df)
print(new_df.index)
print(new_df.index.names)
print(new_df.index.levels)
案例2:基本數據操作
# 基本數據操作
import pandas as pd
data = [[23.53,25.88,24.16,23.53],[22.8,23.78,23.53,22.80],[22.88,23.37,22.82,22.71]]
df = pd.DataFrame(data,columns=['open','high','close','low'],index=['2019-08-21','2019-08-20','2019-08-19'])
# 先列后行
print(df['open']['2019-08-19'])
# 先行后列
print(df.loc['2019-08-19','open'])
print(df.iloc[1, 0])
# 獲取行第1天到第2天,['open', 'close', 'high', 'low']這個四個指標的結果
print(df.ix[:2, ['open', 'close', 'high', 'low']])
# 賦值操作
df.open = 100
df.iloc[1, 0] = 222
print(df)
print(df.sort_values(by=["high", "low"], ascending=False))
print(df.sort_index())
sr = df['high']
print(sr.sort_values(ascending=False).head())
print(sr.sort_index())
print(df["open"].add(3))
print(df.sub(100))
print(df["close"].sub(df["open"]).head())
print(df[df["high"] > 24])
print(df.query("close > 24 & low > 15"))
# 統計運算
print(df.describe())
print(df.max(axis=0))
print(df.idxmax(axis=0))
df["close"].sort_index().cumsum().plot()
#自定義運算
print(df.apply(lambda x: x.max() - x.min()))
# 散點圖
df.plot(x="low", y="high", kind="scatter")
案例3:數據文件讀取
# 數據文件讀取
# csv
import pandas as pd
pd.read_csv("./stock_day/stock_day.csv", usecols=["high", "low", "open", "close"]).head()
data = pd.read_csv("stock_day2.csv", names=["open", "high", "close", "low"])
# 保存'open'列的數據
data[:10].to_csv("test.csv", columns=["open"])
pd.read_csv("test.csv")
data[:10].to_csv("test.csv", columns=["open"], index=False, mode="a", header=False)
# hdf5
day_close = pd.read_hdf("./stock_data/day/day_close.h5")
day_close.to_hdf("test.h5", key="close")
print(pd.read_hdf("test.h5", key="close"))
day_open = pd.read_hdf("./stock_data/day/day_open.h5")
day_open.to_hdf("test.h5", key="open")
print(pd.read_hdf("test.h5", key="close").head())
# JSON
sa = pd.read_json("Sarcasm_Headlines_Dataset.json", orient="records", lines=True)
print(sa)
sa.to_json("test.json", orient="records", lines=True)
總結
以上是生活随笔為你收集整理的python学习与数据挖掘_Python学习之数据挖掘(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20万存大额存单还是买理财?
- 下一篇: 源码包编译安装python_Python