主頁 > 後端開發 > 【技識訓累】Python中的Pandas庫【三】

【技識訓累】Python中的Pandas庫【三】

2023-06-12 07:34:50 後端開發

什么是Series

Series是一種帶有標簽的一維陣列,可以容納各種型別的資料(例如整數,浮點數和字串),每個Series物件都有一個索引,它可以用來參考每個元素,Series物件的主要特征是可以進行矢量化操作(即一次對整個序列進行操作),因此非常適合處理數值資料,

什么是DataFrame?

DataFrame是一個帶有標簽的二維資料結構,可以容納各種型別的資料(例如整數,浮點數和字串),每個DataFrame物件都由行和列組成,行表示一個實體,串列示屬性,您可以將DataFrame視為電子表格或SQL表,DataFrame的主要特征是可以進行矢量化操作,因此非常適合處理具有多種屬性的資料,此外,DataFrame還具有一些其他功能,例如靈活的資料對齊,分組和聚合,資料排序和合并等,

Pandas庫中的Index物件是什么?

Pandas庫中的Index物件是一種存盤軸標簽的不可變資料結構,它可以看做是Series和DataFrame的識別符號,它們用來標識單個條目或多個相同型別的資料,Index可以是整數、字串或自定義型別的物件,它們的主要功能包括:查找、切片、分組、聚合等,

Index物件的特點有以下幾個方面:

  1. 不可變性:一旦創建,Index物件的元素不能被修改,
  2. 唯一性:Index物件中的元素必須是唯一的,否則會引發例外,
  3. 有序性:Index物件的元素可以按照定義的順序排列,搜索和切片更高效,

Index物件可以通過多種方式創建,例如從一個串列、陣列、元組、字典、DataFrame等物件中創建,也可以手動創建,在DataFrame中,行和列都有自己的Index物件,而在Series中,只有一維的資料和一個Index物件,利用Index物件,可以很方便地對資料進行索引、排序和子集切片等操作,提高了資料處理的效率,

如何創建Series?

1.通過串列或陣列創建:可以通過pd.Series()方法將串列或陣列轉換成Series物件,例如:

import pandas as pd
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/[1, 2, 3, 4, 5]
s = pd.Series(data)
print(s)

# 輸出結果為:
# 0    1
# 1    2
# 2    3
# 3    4
# 4    5
# dtype: int64

2.通過字典創建:可以通過pd.Series()方法將字典轉換成Series物件,例如:

import pandas as pd
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
s = pd.Series(data)
print(s)

# 輸出結果為:
# a    1
# b    2
# c    3
# d    4
# e    5
# dtype: int64

如何創建DataFrame

1.通過串列或陣列創建:可以通過pd.DataFrame()方法將串列或陣列轉換成DataFrame物件,例如:

import pandas as pd
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'name': ['Tom', 'John', 'Mary', 'Lisa', 'Bob'], 'age': [28, 25, 23, 24, 27], 'score': [89, 78, 88, 95, 85]}
df = pd.DataFrame(data)
print(df)

# 輸出結果為:
#    name  age  score
# 0   Tom   28     89
# 1  John   25     78
# 2  Mary   23     88
# 3  Lisa   24     95
# 4   Bob   27     85

2.通過字典創建:可以通過pd.DataFrame()方法將字典轉換成DataFrame物件,例如:

import pandas as pd
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'name': ['Tom', 'John', 'Mary', 'Lisa', 'Bob'], 'age': [28, 25, 23, 24, 27], 'score': [89, 78, 88, 95, 85]}
df = pd.DataFrame(data, index=['one', 'two', 'three', 'four', 'five'])
print(df)

# 輸出結果為:
#        name  age  score
# one     Tom   28     89
# two    John   25     78
# three  Mary   23     88
# four   Lisa   24     95
# five    Bob   27     85

3.通過從檔案中讀取資料創建:可以通過pd.read_方法()將本地存盤的檔案匯入DataFrame物件,例如:

import pandas as pd
df = pd.read_csv('data.csv')
print(df)

# 輸出結果為:
#     name  age  score
# 0    Tom   28     89
# 1   John   25     78
# 2   Mary   23     88
# 3   Lisa   24     95
# 4    Bob   27     85

 

如何對DataFrame進行分組?

Pandas庫中的DataFrame可以按照一個或多個列的值對資料集進行分組,分組后的資料集可以進行多種操作,如計算平均值、總和等,

下面是對DataFrame進行分組的基本步驟:

  1. 匯入Pandas庫
  2. 創建DataFrame, 例如,創建一個簡單的DataFrame,包含姓名、性別和年齡:
  3. 對DataFrame進行分組,可以按照一個或多個列的值對DataFrame進行分組
  4. 對分組后的資料集進行操作,可以對分組后的資料集進行各種計算,如計算平均值和總和,
import pandas as pd

# 創建DataFrame
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Ella', 'Frank'],
        'Gender': ['F', 'M', 'M', 'M', 'F', 'M'],
        'Age': [25, 34, 42, 19, 31, 28]}
df = pd.DataFrame(data)

# 對DataFrame進行分組
grouped = df.groupby(['Gender', 'Age'])

# 計算每個性別和年齡段的總和
print(grouped.sum())

如何對DataFrame進行聚合操作?

對于DataFrame進行聚合,可以使用groupby()方法將資料按照指定的列進行分組,然后再對分組后的資料進行統計、計算等操作,

具體步驟如下:

  1. 使用groupby()方法對資料進行分組,可以按照單列或多列進行分組

  2. 對分組后的資料進行統計、計算等操作,可以使用常見的聚合函式,比如sum()、mean()、max()、min()、count()等

  3. 對聚合后的資料進行重命名、排序等處理,最后得到需要的聚合結果

import pandas as pd

# 創建示例資料
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'category': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
        'value': [1, 2, 3, 4, 5, 6, 7]}
df = pd.DataFrame(data)

# 按照category列進行分組,計算value列的和、平均值和數量
result = df.groupby('category').agg({'value': ['sum', 'mean', 'count']})

# 對聚合結果進行重命名和排序
result.columns = ['total_value', 'mean_value', 'count']
result.sort_values('total_value', ascending=False, inplace=True)

print(result)

如何對DataFrame進行合并操作?

對DataFrame進行合并操作,可以使用merge()方法,將兩個DataFrame按照指定的列進行連接,類似于SQL中的Join操作,如果兩個DataFrame的列名相同,則可以使用on引數指定連接的列,如果列名不同,則需要使用left_on和right_on引數指定連接的列,

具體步驟如下:

  1. 使用merge()方法將兩個DataFrame按照指定列進行連接

  2. 可以選擇不同的連接方式,包括inner、outer、left、right等

  3. 對連接后的資料進行排序、去重、重命名等處理,最終得到需要的結果

import pandas as pd

# 創建示例資料1
data1 = {'id': [1, 2, 3, 4, 5],
        'name': ['Tom', 'Jerry', 'Lucy', 'Lily', 'Jim'],
        'age': [20, 22, 25, 23, 26]}
df1 = pd.DataFrame(data1)

# 創建示例資料2
data2 = {'id': [1, 2, 3, 6, 7],
        'salary': [2000, 2200, 2500, 2300, 2600],
        'gender': ['M', 'F', 'F', 'F', 'M']}
df2 = pd.DataFrame(data2)

# 按照id列進行左連接
result = pd.merge(df1, df2, on='id', how='left')

# 對連接后的資料進行去重、排序、重命名
result.drop_duplicates('id', inplace=True)
result.sort_values('id', inplace=True)
result.rename(columns={'name': 'user_name', 'salary': 'user_salary'}, inplace=True)

print(result)

如何對DataFrame進行重塑操作?

對DataFrame進行重塑操作,包括轉置、堆疊和反堆疊等,轉置是將DataFrame的行與列互換,堆疊是將多個列進行合并為一列,反堆疊則是將一列拆分為多個列,

具體步驟如下:

  1. 對DataFrame進行轉置,可以使用T屬性或transpose()方法實作,

  2. 對DataFrame進行堆疊操作,可以使用stack()方法實作,堆疊時需要指定堆疊的列或行,

  3. 對DataFrame進行反堆疊操作,可以使用unstack()方法實作,反堆疊時需要指定反堆疊的列或行,

import pandas as pd

# 創建示例資料
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'name': ['Tom', 'Jerry', 'Lucy'],
        'math': [90, 80, 70],
        'english': [85, 78, 95],
        'science': [88, 92, 85]}
df = pd.DataFrame(data)

# 轉置DataFrame
result1 = df.T

# 堆疊DataFrame
result2 = df.set_index('name').stack().reset_index()

# 反堆疊DataFrame
result3 = df.set_index('name').unstack().reset_index()

print(result1)
print(result2)
print(result3)

如何對DataFrame進行透視表操作?

對DataFrame進行透視表操作,可以使用pivot_table()方法進行,透視表可以根據行、列和值進行資料匯總和計算,并展示出匯總計算后的結果,

具體步驟如下:

  1. 使用pivot_table()方法對DataFrame進行透視操作,需要指定行、列和值引數,并選擇需要的聚合函式進行計算,

  2. 可以對透視表進行去重、排序和重命名等處理后,得到需要的結果,

import pandas as pd

# 創建示例資料
data = https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/{'name': ['Tom', 'Jerry', 'Lucy', 'Lily', 'Jim', 'Bob', 'Alice'],
        'gender': ['M', 'F', 'F', 'F', 'M', 'M', 'F'],
        'age': [20, 22, 25, 23, 26, 21, 30],
        'category': ['A', 'A', 'B', 'B', 'B', 'C', 'C'],
        'salary': [2000, 2200, 2500, 2300, 2600, 2800, 2900]}
df = pd.DataFrame(data)

# 對資料進行透視表操作,分別統計每種category、gender和age_range下salary的平均值和數量
result = pd.pivot_table(df, index=['category', 'gender'], columns=pd.cut(df['age'], [20, 25, 30]), values=['salary'],
                        aggfunc={'salary': ['mean', 'count']}, fill_value=https://www.cnblogs.com/yyyyfly1/archive/2023/06/11/0)

# 對透視表進行去重、排序、重命名等處理
result = result.stack(level=[0, 1])
result.columns = ['_'.join(col).strip() for col in result.columns.values]
result.reset_index(inplace=True)
result.sort_values(['category', 'gender', 'age'], inplace=True)

print(result)

如何處理重復值?

Pandas庫中提供了一些方法來處理重復值,包括檢測和洗掉重復值,

檢測重復值:

Pandas庫中提供了duplicated()方法用來檢測重復值,回傳一個布爾型別的Series,表示每一行是否為重復行,

drop_duplicates()方法則是用來洗掉重復行,回傳一個新的DataFrame,移除重復行之后的版本,

import pandas as pd


# 創建一個包含重復行的DataFrame

df = pd.DataFrame({'col1': [1, 2, 3, 4, 4, 5],
'col2': ['A', 'B', 'C', 'D', 'D', 'E']})
print(df)


# 檢測重復行

print(df.duplicated())


# 洗掉重復行

df_clean = df.drop_duplicates()
print(df_clean)

 如何處理例外值?

import pandas as pd
import numpy as np


# 創建一個包含例外值的Series

s = pd.Series([1, 2, 3, 4, 5, 100])
print(s)


# 使用Z-score方法檢測例外值

zscore_threshold = 3 # 設定閾值為3
mean = s.mean()
std = s.std()
zscore = (s - mean) / std
print(zscore.abs() > zscore_threshold)


# 使用IQR方法檢測例外值

q1 = s.quantile(0.25)
q3 = s.quantile(0.75)
iqr = q3 - q1
iqr_threshold = 1.5 # 設定閾值為1.5
print((s < q1 - iqr_threshold * iqr) | (s > q3 + iqr_threshold * iqr))


# 使用fillna()方法替換例外值

s_clean = s.copy()
s_clean[s_clean > 10] = np.nan # 設定例外值,將大于10的值設定為缺失值
s_clean = s_clean.fillna(s_clean.median()) # 使用中位數來填充缺失值
print(s_clean)


# 使用replace()方法替換例外值

s_clean = s.replace(100, s.median()) # 將100替換為中位數
print(s_clean)

如何處理離群值?

Pandas庫中提供了一些方法來處理離群值(Outlier),包括檢測和替換離群值,

檢測離群值: Pandas庫中提供了一些方法來檢測離群值,比如基于資料的分布和規模,使用Z-score或IQR兩種方法進行離群值的檢測,并回傳一個布爾型別的Series,表示每一行是否為離群值,

  • Z-score方法將每個值轉換成其到平均值的標準偏差的距離,超過給定閾值的值被視為離群值,
  • IQR方法則是基于四分位數,將資料劃分成四個部分,其中50%的資料落在中間,將中間部分的極端資料看做離群值,

替換離群值: 處理離群值時,我們可以使用fillna()方法或replace()方法來替換離群值,

  • fillna()方法可以使用mean、median、mode等方法替換缺失值,也可以使用給定的常數或者使用前一個或后一個非缺失值填充,
  • replace()方法可以使用常數或者使用給定的字典或函式替換特定的值,
import pandas as pd
import numpy as np


# 創建一個包含離群值的Series

s = pd.Series([1, 2, 3, 4, 5, 100])
print(s)


# 使用Z-score方法檢測離群值

zscore_threshold = 3 # 設定閾值為3
mean = s.mean()
std = s.std()
zscore = (s - mean) / std
print(zscore.abs() > zscore_threshold)


# 使用IQR方法檢測離群值

q1 = s.quantile(0.25)
q3 = s.quantile(0.75)
iqr = q3 - q1
iqr_threshold = 1.5 # 設定閾值為1.5
print((s < q1 - iqr_threshold * iqr) | (s > q3 + iqr_threshold * iqr))


# 使用fillna()方法替換離群值

s_clean = s.copy()
s_clean[s_clean > 10] = np.nan # 將大于10的值設定為缺失值
s_clean = s_clean.fillna(s_clean.median()) # 使用中位數來填充缺失值
print(s_clean)


# 使用replace()方法替換離群值

s_clean = s.clip(0, 10) # 將大于10的值和小于0的值都設定為10和0
print(s_clean)

如何進行資料型別轉換?

在Pandas庫中,我們需要對檔案讀入的資料進行處理和轉換后,才能在之后的分析中有效地使用,資料型別轉換是資料預處理中最基本的操作之一,資料型別的轉換能夠將原有資料的型別轉變為用戶需要的型別,包括將字串轉換為數字、將數字轉換為日期、將數值轉換為類別型別等,Pandas庫中提供了astype()方法來進行資料型別轉換,

astype()方法: Pandas庫中的astype()方法可以將一個或多個列的資料型別轉換為另一種型別,使用astype()方法,需要在括號中指定要轉換資料型別的列名和資料型別,轉換資料型別后將回傳一個新的DataFrame,原資料不發生改變,

import pandas as pd


# 創建一個包含數字和字串的DataFrame

df = pd.DataFrame({'col1': [1, 2, 3],
'col2': ['4', '5', '6']})
print(df.dtypes)


# 轉換資料型別

df['col2'] = df['col2'].astype(int)
print(df.dtypes)

 

在黑夜里夢想著光,心中覆寫悲傷,在悲傷里忍受孤獨,空守一絲溫暖, 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在, 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在,

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

標籤:其他

上一篇:C++ 指標

下一篇:返回列表

標籤雲
其他(160780) Python(38219) JavaScript(25492) Java(18216) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7246) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4589) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2435) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1984) 功能(1967) HtmlCss(1961) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(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
最新发布
  • 【技識訓累】Python中的Pandas庫【三】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-12 07:34:50 more
  • C++ 指標

    # 一、C++ 指標的算術運算 ## 遞增一個指標 我們喜歡在程式中使用指標代替陣列,因為變數指標可以遞增,而陣列不能遞增,因為陣列是一個常量指標。下面的程式遞增變數指標,以便順序訪問陣列中的每一個元素: ``` 實體 #include using namespace std; const int ......

    uj5u.com 2023-06-11 07:17:06 more
  • ImageIO的應用 (AWT和Swing初接觸)

    # ImageIO的應用 # 一、關于IO流 在講imageio之前,我們先來復習一下IO流的使用。 這里我建立一個Java類,用來實作讀取檔案中的內容,并且能夠識別換行,話不多說,上代碼: ```java package com.Evan.demo; import java.io.Buffered ......

    uj5u.com 2023-06-10 07:56:56 more
  • C++面試八股文:了解sizeof運算子嗎?

    某日二師兄參加XXX科技公司的C++工程師開發崗位第10面: > 面試官:了解`sizeof`運算子嗎? > > 二師兄:略微了解(不就是求大小的嘛。。) > > 面試官:請講以下如何使用`sizeof`? > > 二師兄:`sizeof`主要是求變數或者型別的大小。直接使用`sizeof(type ......

    uj5u.com 2023-06-10 07:56:48 more
  • Rust - 介面設計建議之靈活(flexible)

    # Rust - 介面設計建議之靈活(flexible) ## 靈活(flexible) ### 代碼的契約(Contract) - 你寫的代碼包含契約 - 契約: - 要求:代碼使用的限制 - 承諾:代碼使用的保證 - 設計介面時(經驗法則): - 避免施加不必要的限制,只做能夠兌現的承諾 - 增 ......

    uj5u.com 2023-06-10 07:56:43 more
  • C語言回圈列印空心正方形代碼實作

    ```c #include int main() { int w, i, j; printf("輸入正方形邊長\n"); scanf_s("%d", &w); if (w <= 0) { printf("正方形邊長要大于0\n"); return 0; } // 外層回圈控制行數 for (i = ......

    uj5u.com 2023-06-10 07:56:38 more
  • JavaWeb準備作業和部分環境配置

    # JavaWeb ## 基本概念 web開發: - web:網頁的意思 - 靜態web:提供的資料資源不會發生改變 - 動態web:資料是不斷變化的,現代網站幾乎都是動態網站技術堆疊: Servlet/JSP:基于java,主推B/S架構,可以 ? 承載高并發,語法類似ASP ? ASP:微軟,國內 ......

    uj5u.com 2023-06-10 07:56:00 more
  • 切片比陣列好用在哪

    # 1. 引言 在Go語言中,陣列和切片都是常見的資料結構,它們經常被用于存盤資料,可以相互替換。本文將介紹Go語言中陣列和切片的基本概念,同時詳細探討切片的優勢。從而能夠充分的理解切片相對于陣列的優點,更好得對切片進行使用。 # 2. 基本介紹 ### 2.1 陣列 陣列是一種固定長度、具有相同類 ......

    uj5u.com 2023-06-10 07:55:41 more
  • java集成chatGpt完整案例代碼(效果和官網一樣逐字輸出)

    背景 要集成chatGpt參考我上一篇文章即可。但是,如果要實作官網一樣的效果,逐字輸出,難度就提升了不少了。經過在官網的研究發現它應該是采用了SSE技術,這是一種最新的HTTP互動技術。SSE(Server-Sent Events):通俗解釋起來就是一種基于HTTP的,以流的形式由服務端持續向客戶 ......

    uj5u.com 2023-06-10 07:55:33 more
  • Java物件中轉換空值的欄位

    在后端回傳資料給前端時,公司的框架會把值為null的資料去掉,方便前端取值。 如:Person物件為:{name:"浩二", age:24, weight:null, height:114},那回傳給前端的就為{name:"浩二", age:24, height:114}。 如果這個時候有個需求: ......

    uj5u.com 2023-06-10 07:54:49 more