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()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章