資料分析第三天
阿新 • • 發佈:2018-11-12
numpy十分鐘
Axis:緯度 0按列 1 按行
Corrcoef:相關性
Copy:拷貝 相當於深拷貝
sort:排序
A = np.transpose(b)
A.T 矩陣轉至
B.ravel()
Concatebate():資料拼接
Pandas
import jieba
import pandas as pd
#建立一個預設索引從0開始的Series
s = pd.Series([1,2,3,4,5,6])
#自定義索引
s = pd.Series([1,2,3,4,5,6],index=[‘a’,‘b’,‘c’,‘d’,‘e’,‘f’])
s[‘a’:‘d’]#切片包含前後
#使用字典建立一個DataFrame,鍵自動變為索引,一個key預設對應一列資料
s = pd.DataFrame({‘math’:[1,2,3,4,5],‘physic’:[5,6,7,8,9,]})
#讀取頭兩行
s.head(2)
#讀取結尾資料
s.tail(2)
#生成從20180101開始的時間序列,預設增加單位的是天 #peperiods=10天 freq:D天 返回值為DatetiemIndex,作為使用 datas = pd.date_range('20180101',periods=10) #建立使用時間索引的Series date = pd.Series(range(10),index=datas) #取出從2018-01-01到2018-01-06的行資料 date['2018-01-01':'2018-01-06'] #讀取檔案 df_imdb = pd.read_csv('E:\dataanalysis\day03\IMDB.csv') #檢視基本型別 df_imdb.info() #選出一列 df_imdb.Title() #獲取做高票房 df_imdb['Revenue (Millions)'].max() df_imdb['Revenue (Millions)'].sum() df_imdb['Revenue (Millions)'].idxmax()#返回最大值索引 #娶50行 df_imdb[50:51]['Director'] #d第一個緯度是行,第二個是列,取50-56包含前後 df_imdb.loc[50:56,['Director','Year']] #取1-10行,2-3列都不包含後者 df_imdb.iloc[1:10,2:3] #統計導演列中不同導演出現的次數 df_imdb['Director'].value_counts() #講票房大於某一隻的取出來 df_imdb[df_imdb['Revenue (Millions)'] > 500] df_imdb[df_imdb['Revenue (Millions)'] > 500].loc[:,['Title','Director']] #講電影風格描述中含有指定字元的找出來,str講待處理的轉化為字串 # df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')].loc[:,['Title']] df_imdb[df_imdb['Genre'].str.contains('Action')].loc[:,['Title']] df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')].loc[:,['Revenue (Millions)']].loc[:,['Title']] d = df_imdb[df_imdb['Genre'].str.contains('Sci-Fi')] d[d['Revenue (Millions)'] > 500].loc[:,['Title','Director']] #票數前10 s = df_imdb['Votes'].sort_values(ascending=False) s.head(10) #將缺失的資料(NaN)填充為0,也可以根據專案需求指定其他資料 df_score = pd.read_excel('E:\dataanalysis\day03\score.xlsx') #在DataForm增加一列avg,計算當前Df中每一行的額平均值 #前後賦值資料的行數要對應,axis=1按行計算平均值,0按列計算平均值 df_score['avg'] = df_score.mean(axis=1) #增加一列計算總分 df_score['sum'] = df_score.sum(axis=1) #拷貝檔案 d_copy = df_score.copy() #df_score.describe()把每行列都做一個運算 #按性別分組 df_score.loc[:,[u'音樂',u'性別']].groupby(u'性別').sum() #數學>80和化學大於60 df_score[(df_score[u'數學'] > 80 ) | (df_score[u'化學']> 60)] #是妖魔化lambda,配合apply方法將日期中的年份提取出來 #apply函式會將lambd一次作用到資料集的每個元素 dates = pd.Series(['20190901','20190902','20190903']) dates.apply(lambda x:x[0:4]) df_score['avg'] = df_score['avg'].astype('int') df_score['avg'] = df_score['avg'].apply(lambda x :int(x)) #計算數學列的綜合,等 df_score[u'數學'].agg(['sum','mean','max','std']) #講pandas型別轉化為numpy型別 df_score.loc[:,[u'數學',u'化學']].values #講空資料補位0護著自定義 df_score.fillna(0) #將缺失資料移除 df_score.dropna()