python中元祖常用函数 Python函数基础

python常用函数

1、complex()

创新互联建站主营新安网站建设的网络公司,主营网站建设方案,成都App制作,新安h5微信平台小程序开发搭建,新安网站营销推广欢迎新安等地区企业咨询

返回一个形如 a+bj 的复数,传入参数分为三种情况:

参数为空时,返回0j;参数为字符串时,将字符串表达式解释为复数形式并返回;参数为两个整数(a,b)时,返回 a+bj;参数只有一个整数 a 时,虚部 b 默认为0,函数返回 a+0j。

2、dir()

不提供参数时,返回当前本地范围内的名称列表;提供一个参数时,返回该对象包含的全部属性。

3、divmod(a,b)

a -- 代表被除数,整数或浮点数;b -- 代表除数,整数或浮点数;根据 除法运算 计算 a,b 之间的商和余数,函数返回一个元组(p,q) ,p 代表商 a//b ,q 代表余数 a%b。

4、enumerate(iterable,start=0)

iterable -- 一个可迭代对象,列表、元组序列等;start -- 计数索引值,默认初始为0‘该函数返回枚举对象是个迭代器,利用 next() 方法依次返回元素值,每个元素以元组形式存在,包含一个计数元素(起始为 start )和 iterable 中对应的元素值。

python中什么方法用于接收一个元祖

一:元组(tuple)

1、元组是不可改变的序列,同list一样,元组可以存放任意类型的元素,一旦元组生成,则它不可以改变(包括增、删、改)。

2、元组的表示方式:用小括号()括起来,单个元素括起来用逗号(,)区分是单个对象还是元组

3、元组的创建:

创建空元组的字符值:t=()

创建非空元组的字面值:

t=200,

t=(20,)

t=(1,2,3)

t=100,200,300

4、元组的构造函数(tuple)

A:tuple()生成一个空的元组,等同于()

B:tuple(iterable)用可迭代对象生成一个元组

示例:

t=tuple()

t=tuple(range(10))

t=tuple(‘hello’)

t=tuple([])

二:元组的用法

1、元组的算术运算:(用法与列表的用法完全相同)

+=**=

例:定义两个元组,与其相加,再用得到的新元组乘以2,与列表对比一下,看看有何不同?(分析:两原组相加,会把第二个元组的元素放在第一个元组元素的后面,两元组相乘,会重复原元组元素的个数,乘以几,就重复几次)

2、元组的比较运算:

====!=

3、in/not in

索引取值

切片取值

规则与列表完全相同

区别:

元组是不可变对象,不支持索引赋值和切片赋值

4、元组的方法

t.index(v[,begin[,end]])----用于获取元组中V所在的索引位置

t.count(v)----用于获取元组中V的个数

例:定义一个元组字面值,查看某个值在元组的索引位置,并统计其元组中某个数出现的个数。

5、元组中的三个构造函数和序列函数

Str(obj)

List(iterable)

Tuple(iterable)

序列函数:len,max,min,sum,all,any

items在python中用法

作用是以列表返回可遍历的(key,value)的元组数组。

python语法中,items用于字典,作用是以列表返回可遍历的(key,value)的元组数组。

1.语法dict.items,在python中,字典、列表和元祖都是常常使用的代码类型。而他们之间的联系也很密切。例如字典items()函数以列表返回可遍历的(键,值)元组数组,将字典中的键值对以元组存储,并将众多元组存在列表中。

python 8个常用内置函数解说

8个超好用内置函数set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()

python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率。

这次来梳理下8个好用的python内置函数

1、set()

当需要对一个列表进行去重操作的时候,set()函数就派上用场了。

用于创建一个集合,集合里的元素是无序且不重复的。集合对象创建后,还能使用并集、交集、差集功能。

2、eval()之前有人问如何用python写一个四则运算器,输入字符串公式,直接产生结果。用eval()来做就很简单:eval(str_expression)作用是将字符串转换成表达式,并且执行。

3、sorted()在处理数据过程中,我们经常会用到排序操作,比如将列表、字典、元组里面的元素正/倒排序。这时候就需要用到sorted() ,它可以对任何可迭代对象进行排序,并返回列表。对列表升序操作:

对元组倒序操作:

使用参数:key,根据自定义规则,按字符串长度来排序:

根据自定义规则,对元组构成的列表进行排序:

4、reversed()如果需要对序列的元素进行反转操作,reversed()函数能帮到你。reversed()接受一个序列,将序列里的元素反转,并最终返回迭代器。

5、map()做文本处理的时候,假如要对序列里的每个单词进行大写转化操作。这个时候就可以使用map()函数。

map()会根据提供的函数,对指定的序列做映射,最终返回迭代器。也就是说map()函数会把序列里的每一个元素用指定的方法加工一遍,最终返回给你加工好的序列。举个例子,对列表里的每个数字作平方处理:

6、reduce()前面说到对列表里的每个数字作平方处理,用map()函数。那我想将列表里的每个元素相乘,该怎么做呢?这时候用到reduce()函数。

reduce()会对参数序列中元素进行累积。第一、第二个元素先进行函数操作,生成的结果再和第三个元素进行函数操作,以此类推,最终生成所有元素累积运算的结果。再举个例子,将字母连接成字符串。

你可能已经注意到,reduce()函数在python3里已经不再是内置函数,而是迁移到了functools模块中。这里把reduce()函数拎出来讲,是因为它太重要了。

7、filter()一些数字组成的列表,要把其中偶数去掉,该怎么做呢?

filter()函数轻松完成了任务,它用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象。filter()函数和map()、reduce()函数类似,都是将序列里的每个元素映射到函数,最终返回结果。我们再试试,如何从许多单词里挑出包含字母w的单词。

8、enumerate()这样一个场景,同时打印出序列里每一个元素和它对应的顺序号,我们用enumerate()函数做做看。

enumerate翻译过来是枚举、列举的意思,所以说enumerate()函数用于对序列里的元素进行顺序标注,返回(元素、索引)组成的迭代器。再举个例子说明,对字符串进行标注,返回每个字母和其索引。

pandas常用函数汇总

pandas官方文档:

对常用函数做了汇总,每个函数的参数可能不是全的,但是常用的,不常用的没总结,如有问题,请不吝赐教,谢谢!

1、创建Series

  通用函数:pd.Series(values,index)

1)pd.Series([1,2,3],index=[‘a’,‘b’,‘c‘])

2)pd.Series(np.array([1,2,3]),index=[‘a’,‘b’,‘c‘])

3)pd.Series({ 'a':1,  'b':2,  'c':3})

    Series转字典:Series.to_dict()

说明:Series的values参数是python中常见的一维数据类型。

2、属性

1)Series.values ---array([1,2,3])

       Series的values是array类型

2)Series.index---index([‘a’,‘b’,‘c‘])

       未指定index时,自动生成 0-(N-1)的整数索引,

       指定 index时,使用指定索引。

3、Series的索引与切片

   Series[0] / Series['a']  : Sereis可以位置索引或标签索引,也可以进行切片操作

1、创建DataFrame

1) 创建DataFrame的通用函数:

df = pd.DataFrame(values,index,columns)

pd.dataFrame([[1,2,3],[4,5,6],[7,8,9]],index=['a','b','c'],columns=['bj','sh','sz'])

pd.dataFrame(np.arange(1,10).reshape(3,3),index=['a','b','c'],columns=['bj','sh','sz'])

pd.dataFrame('bj':[1,4,7],'sh':[2,5,8],'sz':[3,6,9],index=['a','b','c'])

说明:创建方法与Sries类似,Series的values参数是python中常见的一维数据类型,DataFrame的values参数是python中常见的二维数据类型。

2) 通过网页中复制数据快捷创建

    import webbrowser

    link = ''

    webbrowser.open(link)

    打开界面进行复制,将数据复制到粘贴板中

    df = pd.read_clipboard()   #从粘贴板中读取数据

3)通过Series创建DataFrame

    df = pd.DataFrame([s1,s2,s3],columns=['bj','sh','sz'])

    注意:单独的s1,s2,s3是纵向排列的的Series,但是在DataFrame中是横向排列的。

    自己总结:Series除了打印出来是Series格式外,其他时候可以直接当作list来操作。

2、属性

1)df.columns

    通过columns生成新的DataFrame

    df_new = pd.DataFrame(df,columns=['x1','x2'])

    或者df_new = df[['x1','x2']]

2)df.shape  显示行列数

3)df.head()   默认显示前5行

4)df.tail()     默认显示后5行

3、获取DataFrame的列

1)获取DataFrame某一列

      df.x1或df['x1']:返回值是Series,可以理解为一个DataFrame是由多个Series组成的。

  2) 获取DataFrame某几列

      df_new = df[['x1','x2','x3']]

4、为某列赋值

  1) df['x1'] = range(10)

  2) df['x1'] = numpy.arange(10)

  3) df['x1'] = pd.Series(np.arange(10))

  说明:类似于创建Series

5、为某列对应的特定行重新赋值

    df['x1'] = pd.Series([2,3],index=[0,1])

    将列为x1,行索引为0和1的值改为2,3

6、获取DadaFrame的行

  for row in DataFrame.iterrows():

          print(row[0],row[1])

  #每个row是一个元祖,包含2个元素,row[0]是整型索引,row[1]是Series,所以从行的角度也可以看出,一个DataFrame是由多个Series组成的。

7、DataFrame的转置

  df_new = df.T

1、粘贴板的io

  df = pd.read_clipboard()

  df.to_clipboard()

2、csv的io

   df.to_csv('xxx.csv')

   df = pd.read_csv('xxx.csv')

3、json的io

   df.to_json()

   pd.read_json(df.to_json())

4、excel的io

    df.to_excel('xx.xlsx')

    df = pd.read_excel('xx.xlsx')

5、df = pd.read_sql('')

    df.to_sql('')

1、iloc

  sub_df = df.iloc[10:20,:]  选取DataFrame的10-20行,所有列数据

  sub_df = df.iloc[10:20,0:2]

  说明:iloc函数是位置索引,与索引的名字无关。

2、loc

  sub_df = df.loc[10:20,:'movie_name']

  说明:loc是标签索引,10,20,'movie_name'  都是索引名字,与位置无关。

1、Series.reindex(index=['x1','x2','x3'],fill_value=10)

  将df重新索引,并且将NaN空值用10进行填充

2、Series.reindex(index=range(15),method='ffill')

前项填充,后面的值用前面的值进行填充

通过reindex想到,如果想新增一个空列或者空行,可以用reindex方法,同样地,想减少某些行或者某些列,也可以用reindex方法。

  继reindex之后删除行列的函数操作

  Series.drop('A')   #删除'A'所对应的值

  DataFrame.drop(label,axis) 

  label可以是行名也可以是列名,label是行的话axis是0,label是列的话axis是1。

** 删除行还可以用 del df['A']

nan是numpy的一种数据类型,np.nan,float类型

任何数据与nan的运算结果都是nan

1、nan in Series

  Series.isnull()  --返回value为True或者False的Series

  Series.notnull()  --返回value为True或者False的Series

  Series.dropna()  --返回删除nan值后的Series

  Series.fillna(method='ffill')  --前项插值,按照前面的值填充后面的空值

2、nan in DataFrame

  df.isnull()  --返回value为True或者False的DataFrame

  df.notnull()  --返回value为True或者False的DataFrame

  df.dropna(axis=0/1,how='any/all',thresh=None)

  说明:axis表示删除行为nan或者列为nan;

            any表示只要有一个为空,all表示行中的每个元素或者列中的每个元素为空;

            thresh是阈值的意思,表示某行或者某列nan的个数达到阈值的个数时才删除该行或该列。

  df.fillna(value=1)  ---所有的空值都填充为1

  df.fillna(value={0:0,1:1,2:2}) ---将0列的空值填为0,1列的空值填为1,2列的空值填为2,默认为填充列

  注意:fillna和dropna的特点,生成新的DataFrame,原来的DataFrame不变。

1、多重索引介绍

Series = pd.Series(np.random.randn(6),index=[['1','1','1','2','2','2'],['a','b','c','a','b','c']])

'1','2'为一级索引,'a','b','c'为二级索引

df 可以看做是索引的'1','2'的Series

Series['1']  --Series

Series['1']['a']  --value

Series[:,'a'] --选择'1'和'2'中的'a'对应的值

2、多重索引格式转为二维DataFrame

df = Series.unstack() --转为二维DataFrame

3、多重索引在DataFrame中的操作

1、 map函数与apply函数、applymap函数的区别:

  1)map函数对Series中的每个元素作用;

  2)applymap函数对DataFrame中的每个元素作用;

  3)apply函数对对DataFrame和Series的一列做整体运算。

2、Series.replace(to_replace=[2,3,4],values=[20,30,40])  替换Series中多个值

Series.replace({1:10,2:20})  将索引为1的值替换为10,将索引为2的值替换为20

df.sum()  --默认按照列进行求和,nan的值被忽略

df.min()  --默认按照列求最小值

df.max()  --默认按照列求最大值

df.mean()  --默认按照列求平均值

df.describe()  --默认按照列进行描述

df.sum(axis=1)  --按行求和,nan的值被忽略

#axis=0表示对横轴进行操作,但是运算中表现为纵轴操作

#axis=1表示对纵轴进行操作,但是运算中表现为横轴操作

bins = [0,59,70,80,100],bins是分割范围

score_cat = pd.cut(Series,bins)  ---得到catgory类型的数据

DataFrame的分箱技术很棒啊!

pd['catgory'] = pd.cut(df['a'],bins=[0,59,70,80,100],labels=['low','ok','good','great'])

--新增一列,将a列的值按照labels进行分类标记,good!!!

#生成长度为3的随机字符串  pd.util.testing.rands(3)

1、按照一列分组

  g = df.groupby('city')

  g是分组类型数据,打印不出来,所以看不到,但是有属性和方法可以间接的了解

1) g.groups  --得到分的几个组,和每个组包含的索引

2)g.get_group('BJ')  --得到'BJ'所对应的组

3)groupby = split +apply +combine

       g.mean()  --求每组的平均值

       g.max()   --求每组的最大值

       g.min()   --求每组的最小值

       g.count()

       g.describe()

  4)g是一个可迭代对象,可以用list函数将其转化为list

      list(g) -- [('组名1',DataFrame1),('组名2',DataFrame2),(),()]

      dict(list(g))  --将其转化为字典

  同时可以通过for循环进行遍历操作:for item,desc in g:print(item,desc)

  #怪不得分组后不是DataFrame,因为元组的第一个元素是'分组名'。

2、按照多列分组

  g_new = df.groupby(['city','wind'])

  得到生成器((('分组1','分组2'),DataFrame),(),()...)

  g_new.get_group(('分组1','分组2'))

  for (name_1,name_2),group in g_new:

          print((name_1,name_2),group)

g.mean()  --求每组的平均值

与g.agg('mean')方法一样

pd.pivot_table(df,index=['',''],aggfuc='sum',values=['',''])

index是分组的组名,values是透视表呈现结果的列,columns是values下的分解

#感觉透视表呈现的结果就是groupby+agg后的结果

#分析者需要对数据结构有一定的了解

df.sort_values(by='',ascending=True/False)[:10]  df可以索引

df.value_counts()  --按值计数

df.['a'] = df['b'].apply(lambda x:x0)  --DataFrame中的True/False

通过g.size()可以看到被groupby之后的数据,得到的是一个Series

1、Series的排序:

1)对值进行排序

Series.sort_values()  ---直接对Series的值进行排序

2)通过索引进行排序

Series.sort_index() 

#默认都是升序排列

2、DataFrame的排序

df.sort_values(by='')  --按照某列的顺序进行排序

df['a'].sort_values()  --返回对a列数据的排序结果,只返回a列

1、df.index = Series(['a','b','c'])  直接对index赋予新值

2、df.index = df.index.map(str.upper)

map函数中只传入新的函数名即可

3、df.rename(index=str.upper,columns=str.lower)

  或者传递字典,进行一一转换

pd.merge(df1,df2,on=None,how='left/right/inner/outer')

pd.merge(df1,df2)  --没有on参数默认先找相同的columns,然后在columns下找相同的values

pd.merge(df1,df2,on='columns')  --on参数是指按照指定列进行merge

left:表示以左边的数据表为基准,进行填充右面的数据

right:表示以右边的数据表为基准,填充左边的数据

outer:以on的指定列的所有值为基准,填充两边的数据

inner:默认inner,相同on指定的columns下的相同values对应的左右两边的数据

1、concat拼接

pd.concat([Series1,Series2])

pd.concat([df1,df2])  -- 上下叠加,将没有的列进行填充

2、combine组合

Series1.combine_first(Series2)  --用Series2的值去填充Series1中为空的值

df1.combine_first(df2)  ---用df2将df1中的空值填充

df['A'] = df['A'].apply(str.upper)  ---apply函数中也只输入函数名

len(df)  --求df的长度

len(df['a'].unique())  --查看a列中不重复数据的多少

Series.duplicated()  --返回一列True/False的Series

Series.drop_duplicates()  --删除重复值

df.drop_duplicates('a',keep='first/last')

df.drop_duplicates()  --删除完全重复的行

参数:'a'表示以a列为基准,删除重复值

          first表示保留第一个,last表示保留最后一个

data_list = pd.date_range(start,end,period='D',freq)

period='D',以天为单位

freq = 'W' 以周为单位

freq = 'W-Mon'以每周一位单位

freq = '5H'  以5h为单位

以data_range作为索引提取数据比较简单

df[datetime(2017,9,1)]

df['2017-09-01']

df['20170901']

df['201709']

对时间序列数据进行分组聚合操作:

s1.resample('M').mean()  --以月为单位进行采样,然后求每组的平均值

s1.resample('H').ffill()  --前项填充

s1.resample('H').bfill()  --后项填充

补充:1)jupyter中可以执行linux命令,太棒了!

            !ls

            !more xxx.csv

            !pwd  等等

       2)jupyter 查看函数帮助的快捷键:摁住shift + tab  棒!!!

python里面有哪些自带函数?

python系统提供了下面常用的函数:

1. 数学库模块(math)提供了很多数学运算函数;

2.复数模块(cmath)提供了用于复数运算的函数;

3.随机数模块(random)提供了用来生成随机数的函数;

4.时间(time)和日历(calendar)模块提供了能处理日期和时间的函数。

注意:在调用系统函数之前,先要使用import 语句导入 相应的模块

该语句将模块中定义的函数代码复制到自己的程 序中,然后就可以访问模块中的任何函数,其方 法是在函数名前面加上“模块名.”。

希望能帮到你。


新闻名称:python中元祖常用函数 Python函数基础
文章来源:http://hbruida.cn/article/hhspjh.html