導航:首頁 > 編程語言 > python的resetindex

python的resetindex

發布時間:2023-07-19 00:24:36

① 用python統計詞頻

def statistics(astr):
# astr.replace("\n", "")
slist = list(astr.split("\t"))
alist = []
[alist.append(i) for i in slist if i not in alist]
alist[-1] = alist[-1].replace("\n", "")
return alist

if __name__ == "__main__":
code_doc = {}
with open("test_data.txt", "r", encoding='utf-8') as fs:
for ln in fs.readlines():
l = statistics(ln)
for t in l:
if t not in code_doc:
code_doc.setdefault(t, 1)
else:
code_doc[t] += 1

for keys in code_doc.keys():
print(keys + ' ' + str(code_doc[keys]))

② Python氣象數據處理進階之Xarray(6):數據重組與換形

這一部分涉及到了常用的操作,比如調換維度的位置,給數據重新reshape換形等等,建議大家可以認真閱讀這部分。
老樣子,先新建一個數組

比如說在求某個東西時需要將時間維放在最後一維,但是數據本身的時間在第一維,那麼便可以用到這個操作。
第一種是精準換位,指定每個維度的位置

第二種是單獨換位,只對指定維度換位,將time放在最後,其餘不變

第三種為全部換位,相當於數組轉置

擴展指增加一個維度,壓縮指將一個維度擠壓掉

官方文檔中接下來有一段是關於DataArray向DataSet轉換的,個人感覺放在這一章節並不合理,我後邊會整理放進Python氣象數據處理進階之Xarray(1)中(我覺得兩種基礎數據結構以及互相轉換應該最開始介紹的)。所以接下來跳過這部分。

個人感覺可能處理站點數據會用到這個方法
換一個數組演示

現在將這個2維數組堆疊成1維

也可以拆分,其實就是反堆疊

最重要的是不同於Pandas,Xarray的stack不缺自動丟失缺測值!!!
Xarray還提供了將不同變數stack的例子,有興趣的可以去看看。這個用法感覺比較雞肋

這塊比較難理解,建議還是先讀第一篇文章,弄清數據結構,da數組顯示Dimensions without coordinates: x,而通過da.set_index函數,將X設置為混合索引號。
之後便可以實線自由索引:

通過mda.reset_index('x')重置。
reorder_levels()函數允許調換索引順序(個人感覺比較雞肋)

這小節應該是這篇文章和數組換形換維同等重要的。

這就是對數組進行滾動。這個的作用主要在於做差分計算。雖然前邊講過Xarray提供了中央差計算函數,但是仍需要更靈活的操作,滾動函數就實現了這個目的。

③ python(pandas模塊)

1.什麼是pandas? numpy模塊和pandas模塊都是用於處理數據的模塊。 numpy主要用於針對數組進行統計計算,處理數字數據比較方便。 pandas除了可以處理數字數據,還可...

④ python用卡方檢驗,自動分箱,結果是否可靠有待驗證

def calc_chiSquare(sampleSet, feature, target):

    '''

    計算某個特徵每種屬性值的卡方統計量

    params:

        sampleSet: 樣本集

        feature: 目標特徵

        target: 目標Y值 (0或1) Y值為二分類變數

    return:

        卡方統計量dataframe

        feature: 特徵名稱

        act_target_cnt: 實際壞樣本數

        expected_target_cnt:期望壞樣本數

        chi_square:卡方統計量

    '''

    # 計算樣本期望頻率

    target_cnt = sampleSet[target].sum()

    sample_cnt = len(sampleSet[target])

    expected_ratio = target_cnt * 1.0/sample_cnt

    # 對變數按屬性值從大到小排序

    df = sampleSet[[feature, target]]

    col_value = list(set(df[feature])) 

    # 計算每一個屬性值對應的卡方統計量等信息

    chi_list = []; target_list = []; expected_target_list = []

    for value in col_value:

        df_target_cnt = df.loc[df[feature] == value, target].sum()

        df_cnt = len(df.loc[df[feature] == value, target])

        expected_target_cnt = df_cnt * expected_ratio

        chi_square = (df_target_cnt - expected_target_cnt)**2 / expected_target_cnt

        chi_list.append(chi_square)

        target_list.append(df_target_cnt)

        expected_target_list.append(expected_target_cnt)

    # 結果輸出到dataframe, 對應欄位為特徵屬性值, 卡方統計量, 實際壞樣本量塌拆, 期望壞樣本量

    chi_stats = pd.DataFrame({feature:col_value, 'chi_square':chi_list,

                              'act_target_cnt':target_list, 'expected_target_cnt':expected_target_list})

    return chi_stats[[feature, 'act_target_cnt', 'expected_target_cnt', 'chi_square']]

def chiMerge_maxInterval(chi_stats, feature, maxInterval=5):

    '''

    卡方分箱合並--最大區間限製法

    params:

        chi_stats: 卡方統計量dataframe

        feature: 目標特徵

        maxInterval:最大分箱數閾值

    return:

        卡方合並結果dataframe, 特徵分割敏老split_list

    '''

   橋衫升 group_cnt = len(chi_stats)

    split_list = [chi_stats[feature].min()]

    # 如果變數區間超過最大分箱限制,則根據合並原則進行合並

    while(group_cnt > maxInterval):

        min_index = chi_stats[chi_stats['chi_square']==chi_stats['chi_square'].min()].index.tolist()[0]

        # 如果分箱區間在最前,則向下合並

        if min_index == 0:

            chi_stats = merge_chiSquare(chi_stats, min_index+1, min_index)

        # 如果分箱區間在最後,則向上合並

        elif min_index == group_cnt-1:

            chi_stats = merge_chiSquare(chi_stats, min_index-1, min_index)

        # 如果分箱區間在中間,則判斷與其相鄰的最小卡方的區間,然後進行合並

        else:

            if chi_stats.loc[min_index-1, 'chi_square'] > chi_stats.loc[min_index+1, 'chi_square']:

                chi_stats = merge_chiSquare(chi_stats, min_index, min_index+1)

            else:

                chi_stats = merge_chiSquare(chi_stats, min_index-1, min_index)

        group_cnt = len(chi_stats)

    chiMerge_result = chi_stats

    split_list.extend(chiMerge_result[feature].tolist())

    return chiMerge_result, split_list

def chiMerge_minChiSquare(chi_stats, feature, dfree=4, cf=0.1, maxInterval=5):

    '''

    卡方分箱合並--卡方閾值法

    params:

        chi_stats: 卡方統計量dataframe

        feature: 目標特徵

        maxInterval: 最大分箱數閾值, default 5

        dfree: 自由度, 最大分箱數-1, default 4

        cf: 顯著性水平, default 10%

    return:

        卡方合並結果dataframe, 特徵分割split_list

    '''

    threshold = get_chiSquare_distuibution(dfree, cf)

    min_chiSquare = chi_stats['chi_square'].min()

    group_cnt = len(chi_stats)

    split_list = [chi_stats[feature].min()]

    # 如果變數區間的最小卡方值小於閾值,則繼續合並直到最小值大於等於閾值

    while(min_chiSquare < threshold and group_cnt > maxInterval):

        min_index = chi_stats[chi_stats['chi_square']==chi_stats['chi_square'].min()].index.tolist()[0]

        # 如果分箱區間在最前,則向下合並

        if min_index == 0:

            chi_stats = merge_chiSquare(chi_stats, min_index+1, min_index)

        # 如果分箱區間在最後,則向上合並

        elif min_index == group_cnt-1:

            chi_stats = merge_chiSquare(chi_stats, min_index-1, min_index)

        # 如果分箱區間在中間,則判斷與其相鄰的最小卡方的區間,然後進行合並

        else:

            if chi_stats.loc[min_index-1, 'chi_square'] > chi_stats.loc[min_index+1, 'chi_square']:

                chi_stats = merge_chiSquare(chi_stats, min_index, min_index+1)

            else:

                chi_stats = merge_chiSquare(chi_stats, min_index-1, min_index)

        min_chiSquare = chi_stats['chi_square'].min()

        group_cnt = len(chi_stats)

    chiMerge_result = chi_stats

    split_list.extend(chiMerge_result[feature].tolist())

    return chiMerge_result, split_list

def get_chiSquare_distuibution(dfree=4, cf=0.1):

    '''

    根據自由度和置信度得到卡方分布和閾值

    params:

        dfree: 自由度, 最大分箱數-1, default 4

        cf: 顯著性水平, default 10%

    return:

        卡方閾值

    '''

    percents = [0.95, 0.90, 0.5, 0.1, 0.05, 0.025, 0.01, 0.005]

    df = pd.DataFrame(np.array([chi2.isf(percents, df=i) for i in range(1, 30)]))

    df.columns = percents

    df.index = df.index+1

    # 顯示小數點後面數字

    pd.set_option('precision', 3)

    return df.loc[dfree, cf]

def merge_chiSquare(chi_result, index, mergeIndex, a = 'expected_target_cnt',

                    b = 'act_target_cnt', c = 'chi_square'):

    '''

    params:

        chi_result: 待合並卡方數據集

        index: 合並後的序列號

        mergeIndex: 需合並的區間序號

        a, b, c: 指定合並欄位

    return:

        分箱合並後的卡方dataframe

    '''

    chi_result.loc[mergeIndex, a] = chi_result.loc[mergeIndex, a] + chi_result.loc[index, a]

    chi_result.loc[mergeIndex, b] = chi_result.loc[mergeIndex, b] + chi_result.loc[index, b]

    chi_result.loc[mergeIndex, c] = (chi_result.loc[mergeIndex, b] - chi_result.loc[mergeIndex, a])**2 /chi_result.loc[mergeIndex, a]

    chi_result = chi_result.drop([index])

    chi_result = chi_result.reset_index(drop=True)

    return chi_result

for col in bin_col:

    chi_stats = calc_chiSquare(exp_f_data_label_dr, col, 'label')

    chiMerge_result, split_list = chiMerge_maxInterval(chi_stats, col, maxInterval=5)

    print(col, 'feature maybe split like this:', split_list)

⑤ 最全的pandas面試基礎100題目

在進行下面的題目操作時,一定要先導入上面的兩個數據分析包 pandas、numpy

1. 如何用Python的列表創建一個series?

輸出:

一個series是一個一維的標記數組,可以容納任何數據類型(整數、字元串、浮點數、Python對象等)。必須記住,與Python列表不同,一個series總是包含相同類型的數據。

2.如何使用列表創建一個DataFrame?

輸出:

3.如何使用Series 字典對象生成 DataFrame?

輸出:

4.如何在pandas中創建一個空的DataFrame?
要創建一個完全空的pandas dataframe,我們使用以下操作:

輸出:

已知有這樣的數據,如何進行查看

輸出:

2.如何查看尾部數據?

3.如何快速查看數據的統計摘要?

4.如何查詢索引和列名?

1.簡述Pandas Index
在panda中建立索引意味著簡單地從DataFrame中選擇特定的數據行和列。
pandas支持四種類型的多軸索引,它們是:

它們統稱為索引器。這些是迄今為止索引數據最常見的方法。這四個函數有助於從DataFrame獲取元素、行和列。

2.Pandas 定義重新索引(Reindexing)
重新索引會更改DataFrame的行標簽和列標簽。重新索引意味著使數據符合特定軸上給定的一組標簽。
多個操作可以通過像這樣的索引來完成:

輸出:

3.如何設置索引?

panda set_index() 是一種將列表、序列或dataframe設置為dataframe索引的方法。
語法:
DataFrame.set_index(keys, inplace=False)
參數:

改變索引列
在本例中,名稱列被用作DataFrame的索引列

輸出:
如輸出圖像所示,以前索引列是一系列數字
Before Operation

After Operation

4.如何重置索引?
Pandas Series.reset_index()
函數的作用是:生成一個新的DataFrame或帶有重置索引的Series。

例1: 使用 Series.reset_index() 函數重置給定Series對象的索引

輸出:

現在,我們將使用Series.reset_index()函數來重置給定的series對象的索引

輸出 :

從輸出中可以看到,該 Series.reset_index() 函數已將給定Series對象的索引重置為默認值。它保留了索引,並將其轉換為列。

1.1先創建數據:

1.2選擇單列,產生 Series

詳見 按標簽選擇 。

2.1用標簽提取一行數據:

詳見 按位置選擇 。

3.1用整數位置選擇:

4.1用單列的值選擇數據:

5.1用索引自動對齊新增列的數據:

1.如何得到一個數列的最小值、第25百分位、中值、第75位和最大值?

輸出:

Pandas dataframe.mean(axis=None) 函數返回所請求軸(axis=0代表對列進行求平均值,axis=1代表對行進行求平均值)的值的平均值。

示例: 使用 mean() 函數查找索引軸上所有觀測值的平均值。

輸出:

讓我們使用datafame .mean()函數來查找索引軸上的平均值。

3.如何將函數應用到DataFrame中的每個數據元素?
可以使用 apply() 函數以便將函數應用於給定dataframe中的每一行。讓我們來看看我們完成這項任務的方式。
實例:

輸出:

4.如何在panda中獲得一個DataFrame的行數和列數?

輸出:

獲取df的行和列計數

輸出:

5.如何在panda DataFrame中獲得列值的總和?
Pandas dataframe.sum() 函數返回所請求軸的值的和

語法: DataFrame.sum(axis=None, skipna=None, )
參數:

示例1: 使用 sum() 函數查找索引軸上所有值的總和

現在求出沿索引軸的所有值的和。我們將跳過計算和時的NaN值。

輸出:

如何將新行追加到pandas DataFrame?
Pandas dataframe.append() 函數的作用是:將其他dataframe的行追加到給定的dataframe的末尾,返回一個新的dataframe對象。

語法:
DataFrame.append( ignore_index=False,)
參數:

示例1: 創建兩個數據框,然後將第二個附加到第一個。

現在將df2附加到df1的末尾

輸出:

請注意,第二個DataFrame的索引值保留在附加的DataFrame中。如果我們不希望發生這種情況,則可以設置ignore_index = True。

輸出 :

「group by」 指的是涵蓋下列一項或多項步驟的處理流程:

詳見 分組 。

輸出:

1.先分組,再用 sum() 函數計算每組的匯總數據:

輸出:

2.多列分組後,生成多層索引,也可以應用 sum 函數:

輸出:

如何將numpy數組轉換為給定形狀的DataFrame?

輸出:

輸出:

透視表是一種可以對數據動態排布並且分類匯總的表格格式,在pandas中它被稱作pivot_table。
pivot_table(data, values=None, index=None, columns=None)
參數:

詳見: 數據透視表

列印輸出:

用上述數據生成數據透視表非常簡單:

返回結果:

1.如何將列添加到pandas DataFrame?
源數據:

輸出:

輸出:

2.如何向panda DataFrame添加索引、行或列?
向DataFrame添加索引
如果您創建了一個DataFrame, panda允許將輸入添加到索引參數中。它將確保您擁有所需的索引。否則,在默認情況下,DataFrame包含一個數值索引,該索引從0開始,在DataFrame的最後一行結束。

向DataFrame添加行、列
我們可以使用.loc、iloc和ix將行、列插入到DataFrame中。

添加具有特定索引名的行:

輸出:

3.如何在panda DataFrame上進行迭代?
您可以通過結合使用for循環和對DataFrame的iterrows()調用來遍歷DataFrame的行。

輸出:

4.我們如何排序DataFrame?
我們可以通過以下幾種有效地在DataFrame中執行排序:

(1)按標簽
可以使用sort_index()方法對數據dataframe進行排序。可以通過傳遞axis參數和排序順序來實現。默認情況下,按升序對行標簽進行排序。

⑥ Python基礎命令都有什麼

(1)打開csv文件
import pandas as pd
df=pd.read_csv(r』data/data.csv』)
(2)dataframe index 重新排序
data=df.sort_index(axis=0,ascending=False)
(3)dataframe 按照某一列進行升序或者降序排列
data=df.sort([『date』],ascending=True升序,False降序)
(4)dataframe 的index重新從0開始
data=data.reset_index(drop=True)
(5)畫橫坐標是日期的圖
import matplotlib.pyplot as plt
x=data[『date』]#日期是字元串形式
y=data[『close price』]
plt.plot_date(x,y)
(6)求標准差
import numpy as np
np.std
(7)下取整
import math
math.floor
上取整:math.ceil
(8)希爾伯特變換
from scipy import fftpack
hx= fftpack.hilbert(price)
(9)值排序
data.order()
(10)差分
data.diff(1)#一階差分
dataframe 刪除元素
data.drop(元素位置)
(11)嵌套的array處理方法
import itertools
a = [[1,2,3],[4,5,6], [7], [8,9]]
out = list(itertools.chain.from_iterable(a))
(12)dataframe修改列名
data.columns=[『num』,』price』]
(13)excel表導入以後有空行解決辦法
import numpy as np
data= data.drop(data.loc[np.isnan(data.name.values)].index)
(15)diff用法
一.是dataframe或者series格式,直接就用data.diff()
二.是list格式,先轉換成轉換成list格式data=data.tolist() 然後dif=np.diff(data)
(16)dataframe中的日期type不是date格式,不能直接相加減,所以先轉換成list格式
t=data.time.tolist()
date_time = datetime.datetime.strptime(str(t),』%Y-%m-%d %H:%M:%S』)
date_time=datetime.date(date_time.year,date_time.month,date_time.day)
past= date_time - datetime.timedelta(days=n*365)
(17)符號化
np.sign
(18)字典的使用
label={『11』:』TP』,』1-1』:』FN』,』-11』:』FP』,』-1-1』:』TN』}
for i in range(len(data1)):
state=str(int(data1[i]))+str(int(data2[i]))
result.append(label[state])
(19)用plt畫圖的時候中文不顯示的解決辦法
from matplotlib.font_manager import FontProperties
font_set = FontProperties(fname=r」c:windowsontssimsun.ttc」, size=15)
plt.title(u』中文』, fontproperties=font_set)
(20)獲取當前程序運行的時間
from time import time
time1=time()
time2=time()
print(time2-time1)
以上是我找到的資料,對於我這個學習Python到半吊子的人來說也是要收藏起來的。

閱讀全文

與python的resetindex相關的資料

熱點內容
java互聯網公司 瀏覽:68
對弈下象棋的app哪裡好 瀏覽:705
有什麼食譜app推薦 瀏覽:469
python實現動態口令 瀏覽:823
我的世界電腦伺服器地址怎麼添加 瀏覽:850
傳奇地圖怎麼加密到pak 瀏覽:977
linux刪除mysql用戶 瀏覽:755
圖案設計pdf 瀏覽:584
pdf編輯器在線 瀏覽:471
華為雲雲耀伺服器如何關機 瀏覽:994
數字加密的歷史 瀏覽:613
宏傑文件夾打不開 瀏覽:819
施工日記app哪個好 瀏覽:566
什麼是壓縮機的排氣量 瀏覽:538
在哪個app可以預約一科考試 瀏覽:634
易語言vmp加殼源碼 瀏覽:513
閱讀前端框架源碼 瀏覽:14
我的世界命令方塊傳送指令 瀏覽:545
不能用start命令打開xp 瀏覽:925
text命令 瀏覽:30