Python基礎

需求分析

本實訓主要鍛鍊學生的Python基礎語句使用能力,小到簡單的輸入輸出大到類的定義繼承都有詳細的代碼介紹,且代碼爲Python3的版本。無需學生自己對代碼進行升級和改造。

實驗步驟

步驟一:Python基礎

第一步:打印輸出

在屏幕上輸出“Hello Word”。

print('hello world')

輸出結果如下。
hello world

第二步:基本語法

1、變量定義賦值輸出

x = "a" # 變量命名
print(x)# 打印變量的值
print(type(x)) # 查看變量類型
x = 3# 之所以成爲動態語言的原因
print(type(x))

輸出結果如下。

a
<class ‘str’>
<class ‘int’>

2、關鍵字

import keyword
print(keyword.kwlist)

輸出結果如下。
在這裏插入圖片描述
3、數學運算

print(x + 1,x - 1, x * 2,x/2, x ** 2)

輸出結果如下。
4 2 6 1 9

4、Python 2與Python 3除法的區別

print(float(1/2)) # python 2   1.0/2    或者 float(1)/2
print(1/2)

輸出結果如下。
0.5
0.5

5、數據類型

# 讀取數據集中的location
import pandas as pd
medicare = pd.read_csv('./medicare.csv')
location = medicare['Location'][0]
# 整型、浮點型
location # 字符串 location
print(location)

輸出結果如下。

2505 U S HIGHWAY 431 NORTH
BOAZ, AL 35957

t = True # 布爾型
f = False
print(t and f) # 與
print(t or f)# 或
print(not t)# 非
print(t != f)# 異或

輸出結果如下。
False
True
False
True

print(not (True | False) | True) # not (True | False) | True  # 取非操作

輸出結果如下。
False

7、字符串類型:長度、索引、切片、合併和重複

S = 'Boyabigdata'
print(len(S))# 長度
print(S[0])# 索引,順序和逆序
print(S[-2])
print(S[:])# 切片
print(S[1:3])
print(S+'xyz')# 合併和重複
print(S*3)
raws = r'B\nya'# 原始字符串
print(raws)

輸出結果如下。
11
B
t
Boyabigdata
oy
Boyabigdataxyz
BoyabigdataBoyabigdataBoyabigdata
B\nya

8、字符串的相關方法:find, replace, upper, split, strip, lstrip, rstrip, capitalize, title

print(S.find('Boya')) # 找到第一次出現'Boya'的位置
print(S.replace('Boya','XYZ')) # 替換字符串
print(S.upper()) # 大寫
line='aa,bb,ccc,dd'
print(line.split(',')) # 分割
line=' aa,bb,ccc,dd '
print(line.rstrip()) # 去掉末尾的空格
print(line.lstrip())# 去除開頭的空格
print('  world '.strip()) # 去掉首尾的空格
hw12='%s %s %d' % ('hello','world',12) #格式化字符串
print('{} {} {}'.format('hello','world',12))
print(hw12)
print(hw12.capitalize())# 首字母大寫
print(hw12.title())# 每個單詞首字母大寫

輸出結果如下。

0
XYZbigdata
BOYABIGDATA
[‘aa’, ‘bb’, ‘ccc’, ‘dd’]
aa,bb,ccc,dd
aa,bb,ccc,dd
world
hello world 12
hello world 12
Hello world 12
Hello World 12

第三步:文件讀寫:open, csv, pandas

三種讀取方式分別爲read、readline、relines

打開文件,代碼如下。

f = open('./medicare.csv',mode="r")# 生成文件對象

1、read讀取,代碼如下所示。

print(f.read(8))

結果如下所示。
Provider

2、readline讀取,代碼如下所示。

print(f.readline())

結果如下所示。

ID,Hospital Name,Address,City,State,ZIP Code,County Name,Phone Number,Measure Name,Measure ID,Score,Footnote,Measure Start Date,Measure End Date,Location

3、readlines讀取,代碼如下所示。

print(f.readlines())

結果如下圖所示。
在這裏插入圖片描述

關閉文件

f.close()

練習:讀取第一行存爲columns,第二行爲sample

1、讀取文件

import csv# csv模塊讀寫
f = open('./medicare.csv',mode="r")
content = csv.reader(f)
samples = list(content)
print(samples[1])

結果如下圖所示。
在這裏插入圖片描述

2、read方法讀取文件內容

import pandas as pd
medicare = pd.read_csv('./medicare.csv')
print(medicare.head(1))

結果如下圖所示。
在這裏插入圖片描述

第四步:列表

1、提取第一個樣本,並查看類型

f = open('./medicare.csv', mode="r")
columns = f.readline()
sample = f.readline()
f.close()
clean_sample = sample.strip().split(',')
print(type(clean_sample))# 查看類型
print(clean_sample)

結果如下圖所示。
在這裏插入圖片描述

2、列表創建和列表索引

sample = ['1325','City Hospital',0.67]
print(len(sample)) # 列表長度
print(sample[0]) # 列表索引
sample.append('01/01/2014') # 添加列表元素:末尾添加'01/01/2014'
print(sample)
sample.insert(-1,'12/31/2014') # 添加列表元素:指定位置-1添加'12/31/2014'
print(sample)

結果如下圖所示。
在這裏插入圖片描述

3、整合兩個列表輸出

sample = ['1325','City Hospital',0.67]
date = ['01/01/2014','12/31/2014']
# 整合兩個列表
sample.extend(date)
print(sample)

結果如下圖所示。
[‘1325’, ‘City Hospital’, 0.67, ‘01/01/2014’, ‘12/31/2014’]

4、獲取元素索引號

sample.index(0.67)

結果如下圖所示。
2

練習1:提取第一個樣本的Hospital Name和Score

# 參考代碼
# 讀取數據文件,並進行數據清洗
f = open('./medicare.csv', mode="r")
columns = f.readline()
sample = f.readline()
f.close()
columns_list = columns.strip().split(',')
sample_list = sample.strip().split(',')
# 使用中間變量index的方法
hospital = ['Hospital Name']
index = columns_list.index('Hospital Name')
hospital.append(sample_list[index])
# 不使用中間變量index的方法,節省代碼行數,犧牲可讀性
score = ['Score']
score.append(float(sample_list[columns_list.index('Score')]))
shortinfo = hospital + score
print(shortinfo)

結果如下圖所示。
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’, 0.98]

1、列表切片和元素刪除

shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
print(shortinfo[1:3])# 列表切片
print(shortinfo[:]) # 拷貝列表
print(shortinfo[:2])# 從頭開始切片
print(shortinfo[::-1])# 切片產生逆序,等價於reverse(),區別?

結果如下圖所示。

[‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’]
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Score’, 0.98]
[‘Hospital Name’, ‘MARSHALL MEDICAL CENTER SOUTH’]
[0.98, ‘Score’, ‘MARSHALL MEDICAL CENTER SOUTH’, ‘Hospital Name’]

  • 字符串切片

    s = ‘hackdata’
    print(s[2:4])

結果如下圖所示。

ck

  • 元素刪除remove方法

     shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
     shortinfo.remove('MARSHALL MEDICAL CENTER SOUTH') # 元素刪除:remove方法
     print shortinfo
    

    結果如下所示。
    [‘Hospital Name’, ‘Score’, 0.98]

  • 元素刪除:del方法

     shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
     del shortinfo[1] # 元素刪除:del方法
     print(shortinfo)
    

    結果如下所示。
    [‘Hospital Name’, ‘Score’, 0.98]

  • 元素刪除:pop方法

    shortinfo = ['Hospital Name', 'MARSHALL MEDICAL CENTER SOUTH', 'Score', 0.98]
    shortinfo.pop(1) # 元素刪除:pop方法
    print(shortinfo)
    

結果如下所示。
[‘Hospital Name’, ‘Score’, 0.98]

練習2:可變數據結構的淺拷貝與深拷貝

1、賦值操作

name1 = ['hack']
name2 = name1
name1.append('data')
print(name1)
print(name2)

結果如下所示。
[‘hack’, ‘data’]
[‘hack’, ‘data’]

2、淺拷貝操作

name1 = ['hack',['da','ta']]
name2 = name1[:]
name2[0] = 'hook'
name2[1][0] = 'do'
print(name1)
print(name2)

結果如下所示。
[‘hack’, [‘do’, ‘ta’]]
[‘hook’, [‘do’, ‘ta’]]
3、深拷貝操作

from copy import deepcopy
name1 = ['hack',['da','ta']]
name2 = deepcopy(name1)
name2[0] = 'hook'
name2[1][0] = 'do'
print(name1)
print(name2)

結果如下所示。
[‘hack’, [‘da’, ‘ta’]]
[‘hook’, [‘do’, ‘ta’]]

第五步:控制結構

1、for循環

for item in shortinfo:
    print(item)

結果如下所示。
Hospital Name
Score
0.98

2、循環時改變迭代列表

for item in shortinfo[:]:
    shortinfo.append(1)
print(shortinfo)

結果如下所示。
[‘Hospital Name’, ‘Score’, 0.98, 1, 1, 1]

3、range函數

l = ['hack','data']
for index in range(len(l)):
    print(index, l[index])

結果如下所示。
0 hack
1 data

4、enumerate函數

for index, item in enumerate(l):
    print(index, item)

結果如下所示。
0 hack
1 data

5、zip函數

for index, item in zip(range(len(l)),l):
    print(index, item)

結果如下所示。
0 hack
1 data

6、if條件語句
false_values = [False,None,0,(),{},[],’’] # Python的False值

# if 條件語句
review_sentiment = -1
if review_sentiment > 0 :
    print('positive')
elif review_sentiment ==0:
    print('neutral')
else:
    print('negative')

結果如下所示。
negative

7、while 循環結構

review_sentiment = -1
while review_sentiment < 5:
    review_sentiment += 1
    print('review_sentiment equals %d' % review_sentiment)

結果如下所示。

在這裏插入圖片描述
8、break,continue,pass

review_sentiment = -1
while review_sentiment < 20:
    review_sentiment += 1
    print('review_sentiment equals %d' % review_sentiment)
    if review_sentiment > 1:
        break

結果如下所示。

在這裏插入圖片描述

練習:取出Hospital Name和Score放入一個嵌套列表中,並將Hospital每個單詞轉換爲首字母大寫

import csv

with open('./medicare.csv', mode="r") as f:
    content = csv.reader(f)
    samples = list(content)

# 找到兩列的索引位置
idx1 = samples[0].index('Hospital Name')
idx2 = samples[0].index('Score')
samples_filtered = []

# 將Hospital Name中的單詞轉換爲首字母大寫的形式
for item in samples[1:]:

    # 方法一 capitalize() + for循環
    words = item[idx1].strip().split(" ")
    for index, word in enumerate(words):
        words[index] = word.capitalize()
    item[idx1] = " ".join(words)
    samples_filtered.append([item[idx1], item[idx2]])

    # 方法二 title()
#     words = item[idx1].title()
#     samples_filtered.append([words,item[idx2]])

print(samples_filtered[:3])

結果如下所示。

[[‘Marshall Medical Center South’, ‘0.98’], [‘Wedowee Hospital’, ‘0.84’], [‘Crestwood Medical Center’, ‘0.98’]]

第六步:元組

shortinfo_tuple = tuple(shortinfo) # 元素不可變 就兩個方法,count,index
print(shortinfo_tuple)

結果如下所示。
(‘Hospital Name’, ‘Score’, 0.98)
1、元素個數統計

   print(shortinfo_tuple.count(1))

結果如下所示。
0

2、返回索引位置

print(shortinfo_tuple.index(0.98))

結果如下所示。
2

第七步:字典

1、三種方式創建字典

dict1 = {'Marshall Medical Center South':0.98,'Wedowee Hospital':0.84}
dict2 = dict(Marshall_Medical_Center_South=0.98,Wedowee_Hospital=0.84)
dict3 = dict([('Marshall Medical Center South',0.98),('Wedowee Hospital',0.84)])
dict4 = dict([('Wedowee Hospital',0.84),('Marshall Medical Center South',0.98)]) # 無序性
print(dict1)
print(dict2)
print(dict3)
print(dict4)

結果如下所示。
在這裏插入圖片描述
2、有序字典

from collections import OrderedDict
ordered_dict1 = OrderedDict([('Wedowee Hospital',0.84),('Marshall Medical Center South',0.98)])
ordered_dict2 = OrderedDict([('Marshall Medical Center South',0.98),('Wedowee Hospital',0.84)])
print(ordered_dict1)
print(ordered_dict2)

結果如下所示。
OrderedDict([(‘Wedowee Hospital’, 0.84), (‘Marshall Medical Center South’, 0.98)])
OrderedDict([(‘Marshall Medical Center South’, 0.98), (‘Wedowee Hospital’, 0.84)])

3、通過兩個列表創建字典

key_list = ['Marshall Medical Center South','Wedowee Hospital']
value_list = [0.98,0.84]
dict5 = {}
for key, value in zip(key_list,value_list):
    dict5[key] = value
print(dict5)

結果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

4、元素訪問

print(dict5['Marshall Medical Center South']) # 通過鍵直接訪問
print(dict5.get('Marshall Medical Center South')) # get方法獲得鍵的值
print(dict5.get('Marshall')) # 不存在鍵值,返回none
print(dict5.get('Marshall',u'鍵值不存在')) # 可以指定鍵不存在時,返回的值
print('Marshall Medical Center South' in dict5)# in 查詢

結果如下所示。

0.98
0.98
None
鍵值不存在
True

5、返回數據

print(dict5.keys()) # 返回所有的鍵
print(dict5.values()) # 返回所有的值
print(dict5.items())# 返回鍵值元組列表
結果如下所示。
在這裏插入圖片描述

6、items遍歷讀取字典鍵值

for key,value in dict5.items(): # items遍歷讀取字典鍵值
    print(key,":",value)

結果如下所示。
Marshall Medical Center South : 0.98
Wedowee Hospital : 0.84

7、字典元素添加與刪除

dict5['City Hospital']= 1 # 字典元素的添加 
print(dict5)
del dict5['Wedowee Hospital'] # del方法刪除字典元素
print(dict5)
dict5.pop('City Hospital') # pop方法刪除元素
print(dict5)
dict5.clear() # 刪除字典中所有元素
print(dict5)

結果如下所示。
在這裏插入圖片描述

第八步:集合

1、創建集合

set1 = {1,2,3}# {}創建集合
print(set1)
print(shortinfo) # set函數創建集合
shortinfo_set = set(shortinfo)
print(shortinfo_set)

結果如下所示。
在這裏插入圖片描述
2、添加刪除元素

shortinfo_set.add('City Hospital') # 增加元素
print(shortinfo_set)
shortinfo_set.remove('City Hospital') # 刪除元素
print(shortinfo_set)

結果如下所示。

{‘Score’, ‘Hospital Name’, ‘City Hospital’, 0.98}
{‘Score’, ‘Hospital Name’, 0.98}

3、並集、交集、差集等集合運算

print(shortinfo_set)

結果如下所示。
{0.98, 1, ‘Hospital Name’, ‘Score’}

第九步:推導式

1、把列表shortinfo中的所有元素變爲字符串(多行)

for index,item in enumerate(shortinfo):
    shortinfo[index] = str(item)
print(shortinfo)

結果如下所示。
[‘Hospital Name’, ‘Score’, ‘0.98’]

2、列表推導式

[str(item) for item in shortinfo]

結果如下所示。
[‘Hospital Name’, ‘Score’, ‘0.98’]

3、集合推導式

key_list = ['Marshall Medical Center South','Wedowee Hospital']
value_list = [0.98,0.84]
{str(item) for item in set(shortinfo)}# 集合推導式

結果如下所示。
{‘0.98’, ‘Hospital Name’, ‘Score’}

4、通過兩個列表創建字典

dict5 = {}
for key, value in zip(key_list,value_list):
    dict5[key] = value
print(dict5)

結果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

5、字典推導式

{key:value for key,value in zip(key_list,value_list)}

結果如下所示。
{‘Marshall Medical Center South’: 0.98, ‘Wedowee Hospital’: 0.84}

第十步:函數

1、定義平方函數

def square(x):
    s = x*x
    return s
square(2)

結果如下所示。
4

步驟二:變量作用域:局部變量與全局變量

def square(x):
    global number # 局部變量轉換爲全局變量
    number = 5.0
    s = x*x
    return s
square(2)

結果如下所示。
4

print number

結果如下所示。
5.0

步驟三:參數設定

第一步:按位置順序傳入

def polynomial(x, y):
    z = x+2*y
    return z
print(polynomial(1, 2))

結果如下所示。
5

第二步:關鍵詞傳入

print(polynomial(y=1, x=2))

結果如下所示。
4

第三步: 默認參數

def polynomial(x, y=1):
z = x+2*y
return z
print(polynomial(x=2))
結果如下所示。
4

第四步:不定長參數*args

def polynomial(x, *args):
    for item in args:
        x += 2*item
    return x
print(polynomial(2, 1, 2))
print(polynomial(2, *[1, 2])) # 列表傳入

結果如下所示。
8
8

第五步:不定長參數**kwargs

def polynomial(x, **kwargs):
    y = kwargs.pop('y', None)
    z = kwargs.pop('z', None)
    result = x+2*y+3*z
    return result

print(polynomial(x=1, y=1, z=2))
from sklearn.model_selection import train_test_split

結果如下所示。
9

步驟四:lambda函數

square = lambda x:x*x# 快速定義函數

步驟五:map函數

map(square,range(5)) # 列表中的元素依次執行函數

結果如下所示。
<map at 0x16fa88f0>

print [item.capitalize() for item in columns_list]
print map(lambda x:x.title(),columns_list)# map與lambda結合的優雅方式

結果如下所示。
在這裏插入圖片描述

步驟六:模塊

1、導入模塊

# import module as alias
# from module import *
# from module import func1,fun2

步驟七:類

第一步:定義類

# 定義歡迎用戶的類
    class Greeter(object):
        # 構造方法
        def __init__(self, name):
            self.name = name  # 初始化屬性
        # 實例方法
        def greet(self, upper=False):
            if upper:
                print('HELLO, %s!' % self.name.upper())
            else:
                print('Hello, %s' % self.name)
    g = Greeter('Sid')  # 創建Greeter類的一個實例(對象),並初始化實例屬性
    g.greet()  # 調用類中的方法,使用默認參數
    g.greet(upper=True)  # 調用類中的方法,自定義參數

結果如下所示。
Hello, Sid
HELLO, SID!

第二步:繼承類

class Welcome(Greeter):
    pass
w = Welcome('Sid')
print(w.name)
w.greet()

結果如下所示。
Sid
Hello, Sid

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