程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

利用Python進行數據分析——函數部分

編輯:Python

文章目錄

  • 1 基礎知識
    • 1.1 命名空間
    • 1.2 返回多個值
    • 1.3 函數也是對象
  • 2 一些重要函數
    • 2.1 map() 函數
    • 2.2 匿名函數(lambda)
    • 2.3 list() 函數
    • 2.4 set() 函數
    • 2.5 sort() 方法

1 基礎知識

  1. 函數使用 def 關鍵字聲明,用 return 關鍵字返回值。
def my_function(x, y, z=1.5):
if z > 1:
return z * (x + y)
else:
return z / (x + y)
  1. 可以同時擁有多條return語句,如果達到函數末尾時沒有遇到return,則返回None。(和c語言是不一樣的)

  2. 函數可以有一些位置參數(不指定默認值)和關鍵字參數(指定默認值)。
    但是,關鍵字參數必須位於位置參數(如果有的話)之後。

my_function(5, 6, z=0.7)
my_function(3.14, 7, 3.5)
my_function(10, 20)
my_function(x=5, y=6, z=7)
my_function(y=6, x=5, z=7)

1.1 命名空間

函數可以訪問兩種不同作用域中的變量:全局(global)和局部(local)。

Python有一種更科學的,用於描述變量作用域的名稱,即命名空間(namespace)。

任何在函數中賦值的變量,默認都是被分配到局部命名空間的。
局部命名空間是在函數被調用時創建的,函數參數會立即填入該命名空間。

  • 可以使用global關鍵字把函數中的參數聲明為全局變量。
  • 但是不建議頻繁使用global關鍵字,因為全局變量一般是用於存放系統的某些狀態的。

1.2 返回多個值

  • 這個功能是比Java、C++ 方便太多了。需要注意的就是,在調用函數時,要返回值要和接收值一一對應。
python
def f():
a = 5
b = 6
c = 7
return a, b, c
a, b, c = f()
  • 在實際應用中,更多的用法是,函數只返回一個對象,也就是一個元組。然後再將該元組拆分到各個結果變量中。
def f():
a = 5
b = 6
c = 7
return {
'a' : a, 'b' : b, 'c' : c}
return_value = f()

1.3 函數也是對象

  • 對一個復雜的字符串,對其進行數據清洗工作。
  • 需要用到內建的字符串方法和正則表達式——re模塊。
In [171]: states = [' Alabama ', 'Georgia!', 'Georgia', 'georgia', 'FlOrIda', 'south carolina##', 'West virginia?']
import re
def clean_strings(strings):
result = []
for value in strings:
value = value.strip()
value = re.sub('[!#?]', '', value)
value = value.title()
result.append(value)
return result

(1)strip()方法

strip() 方法用於移除字符串頭尾指定的字符(默認為空格或換行符)或字符序列。
返回值:修改之後的字符序列。

注意:該方法只能刪除開頭或是結尾的字符,不能刪除中間部分的字符。


(2)sub()方法
sub()方法用來進行查詢和替換,sub()方法的格式為:
re.sub(pattern, repl, string, count=0, flags=0)

pattern:表示正則中的模式字符串;
repl:表示要替換的字符串(即匹配到pattern後替換為repl),也可以是個函數;
string:表示要被處理(查找替換)的原始字符串;
count:可選參數,表示要替換的最大次數,而且必須是非負整數,該參數默認為0,即所有的匹配都會替換;
flags:可選參數,表示編譯時用的匹配模式(如忽略大小寫、多行模式等),數字形式,默認為0。

(3)title()方法

title()方法的功能:將字符串中所有單詞的首個字母轉化為大寫,其他字母均轉化為小寫。

【特別注意】若在字符串中遇到標點符號、空格、數字等其他非字母元素,則非字母元素後的第一個字母轉化為大寫,其他字母轉化為小寫。

2 一些重要函數

2.1 map() 函數

map 是 python 的內置函數,會根據提供的函數對指定的序列做映射。

map() 函數的格式是:

map(function, iterable,...)

第一個參數接受一個函數名。後面的參數接受一個或多個可迭代的序列,返回的是一個集合。
把函數依次作用在list中的每一個元素上,得到一個新的list並返回。注意:map函數不改變原list,而是返回一個新list。

  • 舉個例子:
del square(x):
return x ** 2
map(square,[1,2,3,4,5])
# 結果如下:
[1,4,9,16,25]
  • 當不傳入function時,map()就等同於zip(),將多個列表相同位置的元素歸並到一個元組中:
map(None,[2,4,6],[3,2,1])
# 結果如下
[(2,3),(4,2),(6,1)]

2.2 匿名函數(lambda)

Python支持一種匿名函數,這種函數僅由單條語句組成,該語句的結果就是返回值。

通過lambda關鍵字定義,代表“正在聲明的是一個匿名函數”。

def short_function(x):
return x * 2
equiv_anon = lambda x: x * 2
  • 舉一個簡單的例子:
def apply_to_list(some_list, f):
return [f(x) for x in some_list]
ints = [4, 0, 1, 5, 6]
apply_to_list(ints, lambda x: x * 2)

相當於:[x *2 for x in ints]

  • 再舉一個例子:
def func(x,y):
return x+y
# 相當於下面的lambda
lambda x,y: x+y
  • 假設有一組字符串,你想要根據各字符串不同字母的數量對其進行排序:
In [177]: strings = ['foo', 'card', 'bar', 'aaaa', 'abab']
In [178]: strings.sort(key=lambda x: len(set(list(x))))
In [179]: strings
Out[179]: ['aaaa', 'foo', 'abab', 'bar', 'card']

2.3 list() 函數

  1. 列表 list() 方法用於將可迭代對象(字符串、列表、元祖、字典)轉換為列表
T = (123, 'Google', 'Runoob', 'Taobao')
L1 = list(T)
print ("列表元素 : ", L1)
S="Hello World"
L2=list(S)
print ("列表元素 : ", L2)
###############################################
列表元素 : [123, 'Google', 'Runoob', 'Taobao']
列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

2.4 set() 函數

set() 函數創建一個無序不重復元素的集合。

可進行關系測試,刪除重復數據,還可以計算交集、差集、並集等,返回新的集合對象

2.5 sort() 方法

sort(*, key=None, reverse=False)
  1. 排序是就地的、穩定的。是修改的列表本身,並且是能夠保持兩個相等語速的位置的。
  2. key 函數的使用:將其應用於每個列表項,並根據他們的函數值對列表進行升序或者降序排序。
  3. reverse 設置反向標志,設置為升序和降序排序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved