02_数据分析与可视化面试题

在这里插入图片描述

博文配套视频课程:Python面试题与面试技巧


列表解析器

列表解析式:它并不是用来解决全新的问题,只是为解决已有问题提供了新的语法

列表解析式语法

number = [1, 2, 3, 4, 5]

double_odds = []

for n in number:
    if n % 2 == 1:
        double_odds.append(n * 2)

print(double_odds)
double_odds = [n * 2 for n in number if n % 2 == 1]
print(double_odds)

无条件子句的列表解析式

month = [str(i) + '月' for i in range(1,12)]
print(month)

字典解析表达式

d = {'j': 'java', 'p': 'python', 'o': 'oracle'}
d2 = {}
for key, value in d.items():
    # 得知遍历时不能修改字典元素
    d2[value] = key
print(d2)
d = {value: key for key, value in d.items()}
print(d)

创建一个边界全为1,里面全为0的列表

import numpy as np

t1 = np.arange(12).reshape(3,4)
# [行,列] 选择并修改某个点
t1[0,0] = 100
print(t1)
print(t1[:,(1,3)])
print(t1[(0,2),1:])

import numpy as np
t2 = np.zeros(shape=(10,10),dtype=np.int8)
t2[[0,9]] = 1
t2[:,[0,9]] = 1
print(t2)

pandas中如何给某一列贴标签

import numpy as np
import pandas as pd

np.random.seed(4)
score_list = np.random.randint(25, 100, size=20)
print(score_list)
# [27 70 55 87 95 98 55 61 86 76 85 53 39 88 41 71 64 94 38 94]
df = pd.DataFrame(data=score_list,columns=['score'])
# 指定多个区间
bins = [0, 59, 70, 80, 100]
labels=['不及格','及格','良好','优秀']
score_cut = pd.cut(df['score'], bins,labels=labels)
print(type(score_cut)) # <class 'pandas.core.arrays.categorical.Categorical'>
print(score_cut)
df['type'] = score_cut
print(df)

DataFrame、Series、ndarray关系

在这里插入图片描述

#  ndarray  --> Series --> DataFrame
import numpy as np
import pandas as pd

t1 = np.arange(12).reshape(3,4)
# 没有列名和索引,聚合函数对ndarray有效
print(t1.max(),t1.min(),t1.mean())
print('-'*100)
# Series必须是1维的
ss = pd.Series(data=[1,2,2,3], name="col_name")
print(ss,type(ss))
print(ss.index,ss.values,type(ss.values),ss.name)
print('-'*100)
# DataFrame是2维的
df = pd.DataFrame(data=t1,index=list('xyz'),columns=list('abcd'))
print(df,type(df))
print(df.index,df.values,df.columns)
# 对每一列进行聚合操作
print(df.max(),df.min(),df.mean())
# 仅仅针对Series操作,对每组进行统计,返回还是一个Series
print(ss.value_counts())  # df操作失败

__new__与__init__方法的区别

  1. __new__是一个静态方法,而__init__是一个实例方法.
  2. __new__方法会返回一个创建的实例,而__init__什么都不返回.
  3. 只有在__new__返回一个cls的实例时后面的__init__才能被调用.
  4. 当创建一个新实例时调用__new__,初始化一个实例时用__init__
class Person(object):

    # 是一个静态方法,根据类型创建实例, 创建实例后会自动调用init方法
    def __new__(cls, *args, **kwargs):
        print(cls, args, kwargs)
        return object.__new__(cls)

    # 是一个实例方法,用来在创建完成对象后进行必要的初始化,该方法返回None
    def __init__(self, name, age):
        print('name:', name, 'age:', age)
        self.name = name
        self.age = age
        # return ""

    def show(self):
        print(self.name, self.age)

p = Person("admin", age=23)
p.show()

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值