Python數據分析Notes(一)

Python數據分析Notes(一)

來自專欄山間詞話

一、count問題

[ America/New_York, America/New_York, America/New_York, Pacific/Auckland, America/Los_Angeles, America/Chicago, ,Europe/Berlin, , America/New_York, America/New_York, America/New_York, America/Chicago, America/Chicago]

試求出出現次數的前幾名(或者按照出現次數從小到大排序)

solution 1、

# first waydef get_count(sequence): count={} for x in sequence: if x in count: count[x] += 1 else: count[x] = 1 return count

然後

def top_counts(count_dict,n=10): value_key_pairs = [(count,tz) for tz,count in count_dict.items()] value_key_pairs.sort() value_key_pairs.reverse() return value_key_pairs[-n:]

這裡的sort( )方法需要注意。

  • sort( )

可以接受key的parameter作為排序的條件,其實參是一個函數。例如:

def takeSecond(pair): return pair[1]key_value_pairs_oo.sort(key = takeSecond)

Solution 2、

# by python labfrom collections import Countertime_zones_count_by_lib = Counter(timezones)timezones = time_zones_count_by_lib.most_common(10)print(timezones)

直接使用Collections中的Counter即可。

二、povit_table(透視表)簡要使用方法

使用透視表,很重要的是要理解你要處理的數據的結構。

假設我們現在擁有這樣的數據:

df1 = pd.DataFrame( data={ name:[ Tom,Tom,Tom,Jerry,Jerry,Jerry ], category:[ 0,1,2,0,1,2 ], rating:[ 5,4,3,4,4,3 ] })

即為:

category name rating0 0 Tom 51 1 Tom 42 2 Tom 33 0 Jerry 44 1 Jerry 45 2 Jerry 3

1、計算每個name的rating總分

pt1 = pd.pivot_table( data = df1, index = name, values=rating, aggfunc = np.sum)

得到:

ratingnameJerry 11Tom 12

Note:如果這裡我們在「aggfunc」中不傳入實參,則默認使用「mean」,即為求平均值的方法。

2、計算每個name的每個不用category的rating總分

現在我們把數據稍微增加一點

category name rating0 0 Tom 51 1 Tom 42 2 Tom 33 1 Tom 24 2 Tom 25 0 Jerry 46 1 Jerry 47 2 Jerry 38 0 Jerry 59 1 Jerry 2

這樣,對應每個不同name,都會有相同的category的不用的rating。

我們現在在pivot_table中的columns中寫入實參

pt1 = pd.pivot_table( data = df1, index = name, values=rating, columns = category, aggfunc= np.sum)

會得到:

category 0 1 2nameJerry 9 6 3Tom 5 6 5

其實,如果這樣展示,可能會更加明白一些:

namecategory 0 1 2Jerry 9 6 3Tom 5 6 5

Summary:現在我們來做一個簡單的概述:values會控制內容,aggfunc會apply在values中,columns會控制不同的子分類。

三、刪選出index

原因:刪選出index之後,我們可以使用loc方法去獲取到特定的行

(1)刪選index

active_titles = rating_by_title.index[rating_by_title>250]

得到:

Index([burbs, The (1989), 10 Things I Hate About You (1999),

101 Dalmatians (1961), 101 Dalmatians (1996), 12 Angry Men (1957),

......])

類似這樣的數值。

(2) 使用loc方法得到行

mean_ratings = mean_ratings.loc[active_titles]

這樣,我們得到大於250個rating數量(size)的數據行。

四、sort_value

DateFrame.sort_value

這是一個DataFrame的方法

top_female_ratings = mean_ratings.sort_values(by=F, ascending=False)

推薦閱讀:

K-means聚類演算法
從數據分析結果到決策
機器學習與數據挖掘中的十大經典演算法
數據分析思維-提供另外一種審視世界的視角

TAG:數據分析 | 數據挖掘 | Python |