主頁 > 後端開發 > 四、Python資料挖掘(Pandas庫)

四、Python資料挖掘(Pandas庫)

2021-03-01 10:56:16 後端開發

四、Python資料挖掘(Pandas庫)

目錄:

  • 四、Python資料挖掘(Pandas庫)
        • 一、Pandas 簡介
        • 二、Pandas 三大結構之——DataFrame
          • 1.DataFrame 的創建
    • pd.DataFrame(data, index, columns, dtype=None, copy=False)
    • pd.DataFrame(dict)
    • pd.date_range(start=, end=, periods=, freq=, closed=None)
          • 2.DataFrame 的屬性
          • 3.DataFrame 重設索引
    • DataFrame陣列.index[下標]
    • DataFrame陣列.columns[下標]
    • new_ = DataFrame陣列.reset_index(drop=False)
    • new_ = DataFrame陣列.set_index(keys, drop=True)
          • 4.其他常用方法
    • DataFrame陣列.T
    • DataFrame陣列.head([num=5])
    • DataFrame陣列.tail([num=5])
    • DataFrame陣列.iloc[行下標/start:stop[, start:stop]]
        • 三、Pandas 三大結構之——Panel
          • 1.MultiIndex
    • DataFrame陣列.index.levels
          • 2.Panel
    • pd.Panel(data, items, major_axis, minor_axis, copy=False, dtype=None)
        • 四、Pandas 三大結構之——Series
          • 1.Series 的屬性
          • 2.Series 的創建
    • pd.Series(data, index)
        • 五、基本資料操作
          • 1.資料的索引/訪問
            • (1)直接索引(先列后行)
    • DataFrame陣列[column][index]
    • DataFrame陣列[start:stop]
            • (2)按標簽索引(先行后列)
    • DataFrame陣列.loc[index][column] DataFrame陣列.loc[index, column]
            • (3)按下標索引(先行后列)
    • DataFrame陣列.iloc[行下標/start:stop[, start:stop]]
            • (4)擴展:屬性訪問法
          • 2.資料的賦值
    • 訪問需要修改的值 = 值
          • 3.排序
            • (1)對 DataFrame 進行排序
    • DataFrame陣列.sort_values(by=, ascending=True)
    • DataFrame陣列.sort_index()
            • (2)對 Series 進行排序
    • Series陣列.sort_values(ascending=True)
    • Series陣列.sort_index()
          • 4.算術運算與邏輯運算
            • (1)算術運算
    • 訪問要進行運算的值 運算式
            • (2)邏輯運算
    • 直接訪問元素的邏輯運算式 ? 布爾陣列
    • DataFrame/Series陣列[布爾陣列]
    • DataFrame/Series陣列[布爾陣列] = 值
    • DataFrame/Series陣列.query("列索引屬性的邏輯運算式")
    • DataFrame/Series陣列[列索引].isin(values)
            • (3)統計運算
    • DataFrame/Series陣列.describe()
            • (4)自定義運算
    • DataFrame/Series陣列.apply(func[, axis=0])
          • 5.Pandas 繪圖
    • DataFrame/Series陣列.plot(x=?, y=?, kind=?)
        • 六、檔案的讀取與存盤據
          • 1.CSV 檔案的讀寫
    • pd.read_csv(filepath_or_buffer, usecols=[ ], names=[ ])
    • DataFrame/Series陣列.to_csv(...)
          • 2.HDF5 檔案的讀寫
    • pd.read_hdf(...)
    • DataFrame/Series陣列.to_hdf(...)
          • 3.JSON 檔案的讀寫
    • pd.read_json(...)
    • DataFrame/Series陣列.to_json(...)


一、Pandas 簡介

  • Pandas是什么?

PandasNumpy 為基礎,借力 Numpy 模塊在計算方面性能高的優勢;其次,Pandas 基于 Matplotlib,能夠簡便的畫圖;Pandas 還具有獨特的資料結構

  • 為什么使用 Pandas?

Pandas 具有便捷的資料處理能力,例如上一節 三、Python資料挖掘(Numpy庫)中我們知道了,通過 Numpygenfromtxt() 函式讀取資料檔案中的字串時,會出現 nan 的情況,但 Pandas 解決了這些問題,具有便捷的資料處理能力,讀取檔案方便,并且封裝了 MatplotlibNumpy 的畫圖和計算


二、Pandas 三大結構之——DataFrame

對于 Numpy 中的 ndarray,它只儲存資料,但不包含資料的意義,而 DataFrame 的結構上,既有行索引,又有列索引二維陣列

可以類比于 SQL 中的一張關系表:一般 DataFrame 中行索引是指不同的事物,而列索引是指事物的屬性(重要

Pandas 一般會和 Numpy 配合著來使用

匯入模塊

import pandas as pd
1.DataFrame 的創建

pd.DataFrame(data, index, columns, dtype=None, copy=False)

回傳 二維陣列dataDataFrame 結構
index 行索引陳述句,陣列
columns 列索引陳述句,陣列
只回傳新陣列,不改變原陣列

例:
在這里插入圖片描述
還可以通過傳入字典來定義 DataFrame

pd.DataFrame(dict)

以字典的方式創建 DataFrame 陣列
字典 key值 作為列索引

例:
在這里插入圖片描述

Pandas 中的特殊索引——時間序列

pd.date_range(start=, end=, periods=, freq=, closed=None)

生成一個固定間隔時間的時間序列,可以用作 DataFrame 的索引
start= 開始日期,格式為:“2021-01-01”(不含時間)"2021-01-01 00:00:00(含時間)"
end= 結束日期,格式和 start= 一致
periods= 生成的時間序列的個數
freq= 頻率,即時間間隔
closed= 把原輸出結果輸出為開/閉區間:
“closed=left” 表示輸出區間為左閉右開
“closed=right” 表示輸出區間為左開右閉

freq 頻率含義
D一天
W一周
W-SUN一周,以星期天為起始,等同于"W"
W-MON一周,以星期一為起始
W-TUE一周,以星期二為起始
W-WED一周,以星期三為起始
W-THU一周,以星期四為起始
W-FRI一周,以星期五為起始
W-SAT一周,以星期六為起始
M一個月,以月結束為界,如:“2018-11-30”, “2018-12-31”
MS一個月,以月起始為界,如:“2021-01-01”, “2021-02-01”
S一秒
T/min一分鐘
H一個小時
A/Y一年,以年結束為界,如:“2020-12-31”

更詳細的內容,可參考下述文章:

  • 【pandas】 之 pandas.date_range 函式
  • 此外,還可以指定數值,如:5D 表示5天;3H 表示三個小時

例:
在這里插入圖片描述

2.DataFrame 的屬性
屬性含義
shape形狀
index行索引
columns列索引
values表格內容-值

例:
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.DataFrame 重設索引

由于這些屬性都是由陣列構成,因此也可以進行一些訪問操作

訪問行索引

DataFrame陣列.index[下標]

訪問行索引中的某一個值

:DataFrame 規定,不能直接通過 DataFrame陣列.index[下標] = 值 修改行索引,不能單獨修改,只能整體修改

例:
在這里插入圖片描述
訪問列索引

DataFrame陣列.columns[下標]

訪問列索引中的某一個值

:DataFrame 規定,不能直接通過 DataFrame陣列.columns[下標] = 值 修改列索引,不能單獨修改,只能整體修改

例:
在這里插入圖片描述
重設索引

new_ = DataFrame陣列.reset_index(drop=False)

重新設定新的索引
drop= 決定是否洗掉原索引,如果 drop=False,則不洗掉原索引,會把原行索引加到第一列中
只回傳新陣列 new_ ,不改變原陣列

例:
在這里插入圖片描述
以某列值設定為新的索引

new_ = DataFrame陣列.set_index(keys, drop=True)

以某列的值設定為新的索引,key為某列的索引
keys 索引,可以設定多個索引
drop 決定是否洗掉作為索引參考后的該列:
drop=Fales 當設定了某列的值為新的索引后,保留這一列
drop=True 當設定了某列的值為新的索引后,不保留這一列,即 列數-1
只回傳新陣列 new_ ,不改變原陣列

  • 以某一列的值作為新的索引,可以類比于 SQL主碼,規定主碼索引
  • 當設定多列作為索引時,可以類比于 SQL主碼,主碼可以由多個屬性組成

例:把 “name” 作為新的行索引
在這里插入圖片描述
例:設定多個行索引
在這里插入圖片描述

4.其他常用方法

DataFrame陣列.T

同樣可以實作行和列的轉置

DataFrame陣列.head([num=5])

回傳 DataFrame 陣列前5行的內容
num 可以指定行數,默認為5行

DataFrame陣列.tail([num=5])

回傳 DataFrame 陣列后5行的內容
num 可以指定行數,默認為5行

  • 后面兩個方法一般用于結構的查看

訪問某一行整行、某一整列或部分資料

DataFrame陣列.iloc[行下標/start:stop[, start:stop]]

用于訪問 DataFrrame 中所選的資料
行下標/start:stop 可以是指 行下標 所索引的行,也可以是某些行 start:stop
start:stop 列的范圍,預設時為所有列,這個不能是下標

后面會作更詳細的介紹

例:
在這里插入圖片描述


三、Pandas 三大結構之——Panel

MultiIndex 與 Panel

1.MultiIndex

MultiIndex 就是多層或分層索引物件,簡單來說,在 DataFrame 具有多列行索引時, MultiIndex 就是多列行索引物件

例:
在這里插入圖片描述

  • 索引的名字分別是 namesex

例:通過 index.索引的名字 可以訪問指定索引

DataFrame陣列.index.levels

顯示索引的內容

在這里插入圖片描述

2.Panel

Panel 是用于存盤三維陣列的結構,其大致結構類似于 DataFrame

通常會把 Pnael 當作 DataFrame(資料幀) 的容器

pd.Panel(data, items, major_axis, minor_axis, copy=False, dtype=None)

回傳 三維陣列dataPanel 結構
data 三維陣列
items - axis 0 每個專案對應于內部包含的資料幀(DataFrame)
major_axis - axis 1 它是每個資料幀(DataFrame)的行索引
minor_axis - axis 2 它是每個資料幀(DataFrame)的
只回傳新陣列 new_ ,不改變原陣列

  • Panel 了解即可,Panel 從版本0.20.0開始棄用:推薦的用于表示3D資料的方法是 DataFrame 上的 MultiIndex 方法

四、Pandas 三大結構之——Series

Series 可以是 DataFrame 中的某一行,視為一維陣列

它包含 索引index (0, 1, 2, 3…)值value 屬性,這里的 index 指的是 Series的列索引——即一維陣列的索引,而不是 DataFrame 的行索引
在這里插入圖片描述
可以把 DataFrame 理解為 Series 的容器

1.Series 的屬性
屬性含義
index索引
values
2.Series 的創建

pd.Series(data, index)

回傳 一維陣列dataSeries 結構
data 一維陣列
index 索引陳述句,陣列

例:

直接創建
在這里插入圖片描述
通過 DataFrame 創建
在這里插入圖片描述

  • 會沿用原 DataFrame 的列索引作為 Series 的索引

通過字典創建
在這里插入圖片描述


五、基本資料操作

1.資料的索引/訪問
(1)直接索引(先列后行)

DataFrame陣列[column][index]

通過 列和行 的索引訪問 DataFrame 中的值
column 列索引,可以是一個陣列
index 行索引,可以是一個陣列,可以預設
注:當 column 是一個陣列時,index 不能指定任何值重要
注:[ ][ ] 是先列后行,不是先行后列

DataFrame陣列[start:stop]

讀取下標在區間 [start, stop) 內的無法指定列

例:

索引到某一值
在這里插入圖片描述
訪問整列資料
在這里插入圖片描述
通過陣列訪問某些組合的資料
在這里插入圖片描述

  • :上述情況中 index 是陣列,column 不能指定任何值
    在這里插入圖片描述
(2)按標簽索引(先行后列)

DataFrame陣列.loc[index][column]
DataFrame陣列.loc[index, column]

通過 行和列 的索引訪問 DataFrame 中的值,上述兩種方法效果一樣,都可以
index 行索引,可以是一個陣列
column 列索引,可以是一個陣列
loc() 不會受到直接訪問那樣的限制

例:

索引到某一值
在這里插入圖片描述
通過陣列訪問部分值
在這里插入圖片描述

  • 可以配合 DataFrame陣列.index[ ] 使用
(3)按下標索引(先行后列)

DataFrame陣列.iloc[行下標/start:stop[, start:stop]]

用于訪問 DataFrrame 中所選的資料
行下標/start:stop 可以是指 行下標 所索引的行,也可以是某些行 start:stop
start:stop 列的范圍,預設時為所有列,這個不能是下標

例:

通過 start:stop 訪問部分值
在這里插入圖片描述

  • 可以配合 DataFrame陣列.columns.get_indexer(columns) 來使用,該方法的作用是通過索引來獲取索引所在位置的 列下標

通過行下標訪問部分值
在這里插入圖片描述

(4)擴展:屬性訪問法

列索引以字母為開頭時,列索引就是該 DataFrame/Series陣列 的屬性,可以用訪問屬性的方法來訪問列

例:
在這里插入圖片描述

2.資料的賦值

可以進行整體賦值,也可以單獨賦值

訪問需要修改的值 = 值

可以實作整體賦值或單獨賦值

例:
在這里插入圖片描述
更多方法不再列舉

3.排序
(1)對 DataFrame 進行排序

排序有兩種形式,一種是根據內容進行排序,一種是根據行索引進行排序

DataFrame陣列.sort_values(by=, ascending=True)

取單個索引(列)或多個索引(列),根據這些索引的內容進行排序
by 可以是根據某個索引(列)的值,也可以根據多個索引的值進行排序,如:by=[“Chinese”, “Math”],則優先根據 Chinese 索引進行排序,若 Chinese 索引值有相等項時,再根據 Math 索引
ascending=False 降序排序
ascending=True 升序排序,默認
只回傳新陣列,不改變原陣列

DataFrame陣列.sort_index()

根據行索引進行排序
只回傳新陣列,不改變原陣列

例:
在這里插入圖片描述

(2)對 Series 進行排序

由于 Series 是一個一維陣列,因此較簡單

Series陣列.sort_values(ascending=True)

根據 Series 陣列內容進行排序
ascending=False 降序排序
ascending=True 升序排序,默認
只回傳新陣列,不改變原陣列

Series陣列.sort_index()

根據索引進行排序
只回傳新陣列,不改變原陣列

4.算術運算與邏輯運算
(1)算術運算

直接進行運算

訪問要進行運算的值 運算式

可以直接進行運算

例:
在這里插入圖片描述
通過方法進行運算

運算方法含義
DataFrame/Series陣列.add(other)加運算:DataFrame/Series陣列元素 + other
DataFrame/Series陣列.sub(other)減運算:DataFrame/Series陣列元素 - other
DataFrame/Series陣列.mul(other)乘運算:DataFrame/Series陣列元素 * other
DataFrame/Series陣列.div(other)除運算:DataFrame/Series陣列元素 / other
DataFrame/Series陣列.mod(other)除(取整)運算:DataFrame/Series陣列元素 % other
DataFrame/Series陣列.pow(other)冪運算:DataFrame/Series陣列元素 ** other

陣列與陣列/自身之間運算(形狀相同時)

例:
在這里插入圖片描述

(2)邏輯運算

直接訪問元素的邏輯運算式 ? 布爾陣列

布爾邏輯運算式 ? 布爾陣列
進行基本的邏輯運算,該運算式記為“布爾陣列”(重要

例:
在這里插入圖片描述
邏輯運算子

邏輯運算子含義
>大于
<小于
!=不等于
|
&
  • :出現報錯時可能是優先級問題,使用 ( ) 表明優先級

例:
在這里插入圖片描述

DataFrame/Series陣列[布爾陣列]

布爾索引,索引布爾陣列中為 True 的元素,并回傳這些元素所在行索引

DataFrame/Series陣列[布爾陣列] = 值

布爾陣列中為 True 的行索引進行統一賦值(整行賦值)

例:

DataFrame/Series陣列[布爾陣列]
在這里插入圖片描述
DataFrame/Series陣列[布爾陣列] = 值
在這里插入圖片描述

邏輯運算函式

列索引以字母為開頭時,列索引就是該 DataFrame/Series陣列 的屬性

當索引以字母為開頭時,才可以使用下面這個方法:

DataFrame/Series陣列.query(“列索引屬性的邏輯運算式”)

根據邏輯運算子訪問符合邏輯運算式
可以代替 DataFrame/Series陣列[布爾陣列] 的作用

例:直接使用列索引——屬性即可
在這里插入圖片描述

DataFrame/Series陣列[列索引].isin(values)

檢驗 DataFrame/Series陣列[列索引] 列中對應的值是否為 values,當 DataFrame/Series陣列[列索引] 中某個位置的 這個值等于values這個值在values中 時,則該值所在對應位置為 True,否則對應位置為 False
DataFrame/Series陣列[列索引] 為索引出的某列的值
values 可以是一個,也可以是一個陣列

例:檢驗 “2021-01-02” 列是否有 23
在這里插入圖片描述
再把這些符合的行索引出來
在這里插入圖片描述

(3)統計運算

DataFrame/Series陣列.describe()

能夠直接得出很多統計結果:countmeanstdminmax

例:
在這里插入圖片描述

  • ?%分位數:指把一組資料從小到大進行排列后,前 ?% 的數小于或等于該數——分位數

統計運算方法

統計運算方法含義
DataFrame/Series陣列.sum([axis=0])(默認按列)統計總和
DataFrame/Series陣列.mean([axis=0])(默認按列)統計平均值
DataFrame/Series陣列.median([axis=0])(默認按列)統計中值
DataFrame/Series陣列.max([axis=0])(默認按列)查找最大值
DataFrame/Series陣列.min([axis=0])(默認按列)查找最小值
DataFrame/Series陣列.mode([axis=0])(默認按列)統計眾數
DataFrame/Series陣列.abs([axis=0])顯示所有值的絕對值
DataFrame/Series陣列.std([axis=0])(默認按列)統計標準差
DataFrame/Series陣列.var([axis=0])(默認按列)統計方差
DataFrame/Series陣列.idxmax([axis=0])(默認按列)找出最大值所在位置
DataFrame/Series陣列.idxmin([axis=0])(默認按列)找出最小值所在位置
  • :由于 DataFrame/Series陣列 的列索引默認視為類似 SQL事物的屬性,因此這些方法在設計時都是按列統計,因為按行統計(屬性之間)沒意義

例:
在這里插入圖片描述
累計統計方法

累計統計方法含義
DataFrame/Series陣列cumsum()前1/2/3/…/n個數逐個累加求和
DataFrame/Series陣列cummax()前1/2/3/…/n個數的最大值
DataFrame/Series陣列cumin()前1/2/3/…/n個數的最小值
DataFrame/Series陣列cumprod()前1/2/3/…/n個數逐個累計求積

例:求一支股票的總漲跌幅
在這里插入圖片描述
還可以畫圖顯示總漲跌幅
在這里插入圖片描述

(4)自定義運算

DataFrame/Series陣列.apply(func[, axis=0])

DataFrame/Series陣列 (默認按列)執行自定義的運算
func 自定義的運算
axis=0 默認按列統計

例:定義一個對列的 最大值-最小值 的函式
在這里插入圖片描述

  • lambda運算式x 指代的就是 stock1 物件
5.Pandas 繪圖

DataFrame/Series陣列.plot(x=?, y=?, kind=?)

繪制簡單圖
x=? 圖表的x軸,用列索引指定,如:x="name"
y=? 圖表的y軸,用列索引指定,如:y="score"
kind=? 圖表的型別,如:kind=“scatter” 就是散點圖

kind引數含義
line折線圖
hist直方圖
scatter散點圖
bar柱狀圖

例:
在這里插入圖片描述


六、檔案的讀取與存盤據

Format TypeData DescriptionReaderWriter
textCSVread_csvto_csv
textJSONread_jsonto_json
textHTMLread_htmlto_html
textLocal clipboardread_cliipboardto_cliipboard
binaryMS Excelread_excelto_excel
binaryHDF5 Formatread_hdfto_hdf
binaryFeather Formalread_featherto_feather
binaryParquet Formalread_parquetto_parquet
binaryMsgpackread_msgpackto_msgpack
binaryStataread_statato_stata
binarySASread_sas
binaryPython Pickle Fomatread_pickleto_pickle
SQLSQLread_sqlto_sql
SQLGoogle Big Queryread_gbqto_gbq
  • text: .text檔案
  • binary:二進制檔案
  • SQL:資料庫檔案
  • :最常用的是CSVHDF5JSON 檔案

下面介紹三種最常用的檔案型別的讀取與存盤

1.CSV 檔案的讀寫

讀取

pd.read_csv(filepath_or_buffer, usecols=[ ], names=[ ])

讀取 csv 檔案
filepath_or_buffer 檔案路徑,帶擴展名
usecols=[ ] 指定讀取的列索引,串列形式
names=[ ] 當指定的 CSV 檔案沒有索引欄位時,讀取 CSV 檔案時會默認把第一行資料作為列索引,這非常不好,這個時候需要自己添加欄位,串列形式

例:打開當前目錄下 stock_day 下的 stock_day.csv 檔案,并獲取 highlowopenclose

import pandas as pd

pd.read_csv("./stock_day/stock_day.csv", usecols=["high", "low", "open", "close"])

寫入

DataFrame/Series陣列.to_csv(…)

DataFrame/Series陣列 內容讀取到 csv 檔案中,帶擴展名
path_or_buf 檔案路徑,檔案不存在時則創建新檔案
columns=[ ] 指定寫入的列索引,串列形式
mode= “w”:覆寫,“a”:追加
index=True 是否寫入行索引,默認為 True
header=True 是否寫入列索引,默認為 True

例:把 前10行openclose 列資料寫入檔案

import pandas as pd

data[:10].to_csv("test.csv", columns=["open", "close"])
2.HDF5 檔案的讀寫

hdf5 是存盤三維資料的檔案,這里的鍵則是指定了不同的二維表

讀取

pd.read_hdf(…)

讀取 hdf5 檔案
filepath_or_buffer 檔案路徑,帶擴展名
key 讀取的鍵
mode 打開檔案的模式

寫入

DataFrame/Series陣列.to_hdf(…)

寫入 hdf5 檔案
filepath_or_buffer 檔案路徑,帶擴展名
key 指定鍵——指定要讀取這張二維表時的鍵
mode= “w”:覆寫,“a”:追加,默認為追加,即追加一個新的鍵的二維表

擴展

優先選擇使用 HDF5 檔案存盤

  • 其速度最快,是 pandas 默認支持的
  • 支持壓縮,使用的方法是 blosc,可以提高磁盤利用率,節省空間
  • HDF5 是跨平臺的,可以潛移到 Hadoop
3.JSON 檔案的讀寫

JSON 檔案是以一行作為一個樣本
在這里插入圖片描述
讀取

pd.read_json(…)

讀取 json 檔案
filepath_or_buffer 檔案路徑,帶擴展名
orient=“records” 讀取檔案后的展示方式,一般為 “records”(默認)
lines=False是否按行讀取 json 物件,默認不是按行讀取,一般選擇 lines=True 按行讀取

寫入

DataFrame/Series陣列.to_json(…)

讀取 json 檔案
filepath_or_buffer 檔案路徑,帶擴展名
orient= 讀取檔案后的展示方式,一般選擇 orient=“records” 即可
lines=False是否按行寫入 json 物件,默認不是按行寫入,一般選擇 lines=True 按行寫入

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/264838.html

標籤:python

上一篇:面向物件---多型

下一篇:說完串列說字典,說完字典說集合,滾雪球學 Python

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more