导航:首页 > 编程语言 > 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相关的资料

热点内容
布林四线指标源码 浏览:966
单片机的控制板 浏览:218
襄阳软件编程 浏览:841
sshpass命令 浏览:106
logo服务器怎么下载 浏览:508
如何ftp连接服务器 浏览:674
creo自动编程 浏览:161
云服务器在电脑怎么开 浏览:432
ipad相册如何在文件夹中建文件夹 浏览:621
和家亲这个app有什么用 浏览:575
什么app里面有种树打折 浏览:374
编程外挂入门教学 浏览:974
pdf黑白转彩色 浏览:725
英国投资加密货币吗 浏览:887
看完程序员那么可爱后的感受 浏览:131
广播在什么APP能听 浏览:678
阿克曼小车连接什么app 浏览:773
all100编程器 浏览:182
加密的内存卡能用吗 浏览:923
linux在线环境 浏览:404