Python难点

Python难点

1.Debug

image-20230404174550405

主要有两个标记:1.直接执行到下一个断点。2.一条一条的执行

2.数据转换

  • float转换为int类型,会将小数部分去除,只保留整数部分。

  • int类型可以随意转化为str

  • int类型转化为float类型,小数点后面会加一个0

3.f字符

{变量:类型}

4.算数运算符

  • 除法运算中,结果必定为浮点型
  • 浮点型参与运算后,结果一定为浮点型

5.三条目运算

a=2
b=1
max=a if(a>b) else b

6.字符串

字符串切片


str='我家在济南市长清区张夏镇'
'''
起始位置可以省略
若起始位置省略,则步长为正数,则起始位置为0
若起始位置省略,则步长为负数,则起始位置为末尾
若结束位置省略,则步长为正数,则结束位置为末尾
若结束位置省略,则步长为负数,则结束位置为0
'''

字符串查找

  • index:查找字符串所在位置,查询其从左到右第一个索引号
  • find:查找字符串所在位置,查询其从左到右第一个索引号
  • rindex:从左往右
  • rfind:从左往右
  • count:查找出现的个数

修改字符串(拆分与合并)

  • replace(a,b):把a替换为b
  • split():去空格,变为列表
  • join():给列表加入间隔符号变成字符串

字符串大小写转换

  • capitalize():将字符串第一个字母大写,其余小写

  • title():把所有单词首字母大写

  • upper():所有字母均大写

字符串两侧内容删除

  • strip():无参数为删除两侧空格,有参数为删除两侧指定参数

  • rstrip():右侧

  • lstrip():左侧

字符串对齐

  • rjust(10,’¥’):右对齐,10代表总的大小,剩余部分用¥t填充
str='你好啊啊'
print(str.rjust(10))  #       你好啊啊
print(str.rjust(10,'$'))  # $$$$$$你好啊啊

  • ljust(10,’¥’)

字符串判断

  • startwith(): 判断是否以…开头,可指定范围
  • endwith():
  • isalnum():判断是否无空格,全为数字
  • isalpha():判断是否全为字母

未知函数补充

  • 公用函数:enumerate():获取容器内元素可带序号

  • lambda函数

    • 数组按照字典中的值进行排序

      list1=[{'尹燕辉':10},{'燕辉尹':20},{'辉燕尹':5}]
      list1.sort(key=lambda x:list(x.values())[0])
      

7.不定长参数与关键字不定长参数

def max(*args)
def max(**keargs)

8.修改文件

  • 为什么要关闭文件?

    • 在文件打开状态时辉保持连接,会持续消耗内存。(内存泄漏)
  • 当文件所有内容读取完成后,会持续返回空字符串,因此识别标志为

    if content == '';
    	break
    
  • 文件函数

    • readline():读取一行,并且以‘/n’结束
    • readlines():一次性将文件全部读下去,将文字以一行为一个元素保存到列表当中
  • 文件操作

    1.os.mkdir(‘student’):创建一个student文件夹

    2.os.rmdir(‘student’):删除student文件夹

    3.os.getcwd():获取当前活动的工作目录

    4.os.chdir(‘文件’):切换到文件目录下

    5.os.listdir():当前目录下的目录结构

9.面向对象

常用的函数

  • init:在对象创建完成后,初始化对象过程中自动调用的方法

  • 在init之外的方法,不是每个对象都拥有,称为独有属性

  • str:

    1.强制类型转换 str(对象)

    2.隐式类型转换 print打印

  • del:程序结束后,变量释放,自动调用del方法,不占内存,使用del操作可以提前释放。

  • __dict__:查询对象的属性,该属性以字典形式保存
    

面向对象的三大特性

面向对象的三大特性:封装、继承、多态

  • 在属性名前加上__可以进行私有化(dict私有属性方法可以查询)

  • 通过get方法可以获取私有属性的值,set方法可以改变私有属性的值

        def get_age(self):
            return self.__b
    
        def set_age(self, c):
            self.__b = c
            return self.__b
    
  • 继承:

1.在继承中可以多级继承,子类中可以使用父类及父类的父类中非私有的属性和方法

2.如果在父类或者更高级的父类中实现了init方法,并且书写了参数,则实例化对象时,必须传值。

3.使用类名mro可以输出类的继承链条。

  • 多继承

    1.两个父类同时有重名函数,则谁写在前面就调用谁的。

  • 多态

    1.子类中调用父类三种方法

    • super().方法名() # 只能调用当前类的上一级类中的方法或函数

    • 类名.方法名(self) #所使用的类名,必须在当前类的继承关系中

    • super(要从哪个类的上级类开始查询,self)

      self是指调用的对象

类属性方法

  • 类属性(所有对象共有的属性)

    1.修改类属性应使用:类名.属性名,而不是对象名.属性名[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fUvrskDz-1689645252200)(Python%E9%9A%BE%E7%82%B9.assets/image-20230426130144175.png)]

  • 实例属性(每个对象独有的)

  • 类方法(只是用类属性):会随着调用次数的增多而不断变化

    1.格式:类名.类方法名

    @classmethod
    def eat_apple_num(cls):
    

    2.会自动传入cls,指的类本身

静态方法

  • 在静态方法中,不会传入self和cls,不适用类属性和实例对象属性

  • 静态方法就是一个普通函数,放到类内部就是为了封装。

    class Person(object):
        @staticmethod
        def func():
            print(1)
    # 调用方法
    Person.func()
    

10.模块与包

  • if __name__ == '__main__'
    

    代表只可在模块内部调试时调用

  • __all__ =['func']
    

    all可以控制模块使用功能from 模块名 import *,不能控制import效果

    凡是没有在all控制的类表内的功能,不能在其他文件中使用

  • 包的导入

    1.import 包名.模块名:注意顺序

    2.from 包名 import 模块名

11.Pandas

  • 文件读取

    image-20230715161001535

    数据=pd.read_csv('ziliao.tsv',sep='\t')# 注意加后面那一部分
    
  • 行标签列标签

    china_df.index #获取行标签
    china_df.columns #获取列标签
    a= china_df.set_index('盈利') #设置某一列为行标签
    
    

    常用函数

    1.数据.loc:根据行标签和列标签决定数据位置

    • 数据.loc[[行标签],[列标签]]:对应行列的数据

    • 数据.loc[[行标签]]:对应行的所有数据

    • 数据.loc[行标签]:series格式数据

    • 数据.loc[行标签,[列标签]]:一边省略series格式数据

    • 数据.loc[行标签,列标签]:获取行列的具体数据

      china_df.iloc[[1]]#获取行位置为1行的所有列的数据,类型为dataframe
      china_df.iloc[1]#获取行位置为1行的所有列的数据,类型为series
      china_df.iloc[[1],2]#获取一个数据,类型为series,标签为行标签
      china_df.iloc[1,[2]]#获取一个数据,类型为series,标签为列标签
      china_df.iloc[1,2]#获取一个数据
      

    2.数据.iloc:根据行列位置确定数据位置,用法与loc一致

    3.loc和iloc的切片操作:

    • 数据.loc[起始:结尾,起始:结尾]

    4.通过[]语法获取指定列的数据

    • 数据[‘列标签’1,’列标签2’,’列标签3’]
  • 标签

    1.数据.columns:数据的列标题

    2.数据.index:数据的行标题

    • 数据.set_index(“year”):设置某一列为行标签
  • series and Datafram

1.创建Series

  • 传入数据均为数字,dtype为int64

  • 传入数据均为字符串,dtype为object

  • 传入数据为多种类型,最终dtype也是object

    object类似于字符串结构

    s = pd.Series([1,2],index = ['1','2'])# index指定标签
    

2.Series常用操作

image-20230715173511122

3.Series常用统计方法

4.bool索引

image-20230715174135861

5.Series运算

  • Series和数值型计算

    series+100:每个元素都加100

  • Series和另外Series计算:两个相同标签进行运算,若不同则结果为NAN

6.dataframe常用操作

值得注意的是info,可以显示有没有非空

image-20230715174728637

7.dataframe——bool

image-20230715175637279

找到对应的行的信息

8.修改行标签和列标签

df.index = ['新标签1',‘新标签2’,‘新标签3’]
df.colums = ['新标签1',‘新标签2’,‘新标签3’]

9.数据的增加删改

  • 修改行

    l.iloc[4]=[1,2,3]
    l

  • 删除行

    l.iloc[4]=[1,2,3]
    l.drop([1:3]) #删除指定行
    
  • 添加行

    china_df
    b = [i for i in china_df.columns]
    a = pd.Series(['1','A11','3'],index = b)
    l =china_df.append(a ,ignore_index=True)
    l
    
  • 增加列

    直接命名一个名字即可,如添加叫年龄的列

    1689645183762
l['年龄'] = [i for i in range(11)]
image-20230715193927109
  • 删除列
l['年龄'] = [i for i in range(11)]
l.drop(['年龄'],axis=1) #axis=1表示列

10.函数nlargest 和nsmallst 的用法

image-20230715195850342

11.简单的统计分析

原数据

image-20230715200346749

按照菜品名分组并统计每一组中盈利的平均值

a=l.groupby('菜品名').盈利.mean()

12.dataframe条件查询操作

image-20230715202652423
china_df.loc[(china_df['盈利']>3594)&(china_df['盈利']<9000)]
image-20230715202754054

13.dataframe分组聚合

image-20230715203207539

14.dataframe排序操作

china_df.sort_values('盈利',ascending=True)  # 盈利按照从小到大排序,Series没有列标签参数
china_df.sort_index(ascending=False) # 行标签按照从大到小排序

‘盈利’]<9000)]


<img src="https://i-blog.csdnimg.cn/blog_migrate/2d115699c44dcde9bc78c3e92e40cbdd.png" alt="image-20230715202754054" style="zoom:50%;" />

### 13.dataframe分组聚合

<img src="https://i-blog.csdnimg.cn/blog_migrate/5be55710768e73dee2530ff232c86c6a.png" alt="image-20230715203207539" style="zoom:50%;" />

### 14.dataframe排序操作

china_df.sort_values(‘盈利’,ascending=True) # 盈利按照从小到大排序,Series没有列标签参数
china_df.sort_index(ascending=False) # 行标签按照从大到小排序










评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值