Datawhale學資料分析第一章

願君多采擷發表於2020-08-19


學習筆記分成基礎知識部分和專案兩部分

更加具體的基礎知識內容請看

pandas基礎知識
參考1,2章
https://github.com/datawhalechina/joyful-pandas

 

需要用到的基礎知識

1.匯入資料
tsv 製表符作為分隔符的欄位符
csv 逗號作為分隔符的欄位符
詳情見利用python進行資料分析第6章
https://github.com/Knowledge-Discovery-in-Databases/team-learning/blob/master/%E7%AC%AC06%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E3%80%81%E5%AD%98%E5%82%A8%E4%B8%8E%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F.md

 

#匯入包
import numpy as np
import pandas as pd
import os

 

#檢視當前工作目錄,修改當前目錄,命令列檢視當前工作目錄
print(os.getcwd())
os.chdir('/Users/mofashipython')
!pwd

/Users/mofashipython/prog/p
/Users/mofashipython

 

#當前工作目錄匯入檔案
df = pd.read_csv('train.csv')
df.head() #檢視開頭5行,可設定引數

#絕對目錄匯入檔案
df = pd.read_csv('/Users/mofashipython/train.csv')
df.tail() #檢視末尾5行,可設定引數


#檢視資訊(資料結構)
df.info()

 

#分塊
chunker = pd.read_csv('train.csv', chunksize=1000)



#修改行標籤和列標籤
df = pd.read_csv('file', names=name1,index_col='name2',header=0)

 

#查詢空值
df.isnull().head()

 

 

#檢視列名和行名
df.columns
df.index
 

#檢視常用的統計數值
df.describe()
'''
count : 樣本資料大小
mean : 樣本資料的平均值
std : 樣本資料的標準差
min : 樣本資料的最小值
25% : 樣本資料25%的時候的值
50% : 樣本資料50%的時候的值
75% : 樣本資料75%的時候的值
max : 樣本資料的最大值
'''

df['列名'].describe()


#儲存檔案至當前目錄
df.to_csv('train_chinese.csv')

 

 

 

2.pandas的基本使用方法
pandas中有兩個資料型別DataFrame和Series
series,一維資料結構,由index和value組成。
dataframe,二維結構,擁有index和value和column。
dataframe由多個series組成,可以從series建立

#建立Series
v=[1,2,3,4,5]
i=[2,3,4,5,6]
s = pd.Series(v,index = i)
s


2 1
3 2
4 3
5 4
6 5
dtype: int64



#建立DataFrame
i =[1,2,3]
c =["one", "two", "three"]
v = np.random.rand(9).reshape(3,3)
d = pd.DataFrame(v, index = i, columns = c)
d


one    two    three
1    0.491216    0.826787    0.002878
2    0.751016    0.849535    0.738048
3    0.066599    0.268772    0.210717

 

 

#對應的行和列的值會相加,沒有對應的會變成空值NaN
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),columns=['a', 'b', 'c'],index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),columns=['a', 'e', 'c'],index=['first', 'one', 'two', 'second'])
frame1_a + frame1_b

a b c e
first NaN NaN NaN NaN
one 3.0 NaN 7.0 NaN
second NaN NaN NaN NaN
three NaN NaN NaN NaN
two 9.0 NaN 13.0 NaN

 

 

3.常用的3種索引方法
df.iloc 位置(數字)索引
df.loc 名稱(標籤)索引
[] 切片索引
df.loc[行索引,列索引]
逗號隔開維度,loc 左閉右閉區間,可使用布林型(true,false)

#全部行,Cabin列,輸出前5個
df.loc[:,'Cabin'].head()

#重置索引,使用預設的行索引
#不保留原索引,需要引數drop=True
df= df.reset_index(drop=True)


#100,105,108行,Pclass,Name,Sex列(標籤值)
df.loc[[100,105,108],['Pclass','Name','Sex']]



#100,105,108行,2,3,4列(索引值)
df.iloc[[100,105,108],[2,3,4]]



#條件查詢(布林型查詢)
df[df["Age"]<10].head(3)
midage = df[(df["Age"]>10)& (df["Age"]<50)]

 


4.排序
sort_values 數值進行排序
sort_index 標籤進行排序

#全部行,Cabin列,輸出前5個
df.loc[:,'Cabin'].head()

#重置索引,使用預設的行索引
#不保留原索引,需要引數drop=True
df= df.reset_index(drop=True)


#100,105,108行,Pclass,Name,Sex列(標籤值)
df.loc[[100,105,108],['Pclass','Name','Sex']]


#100,105,108行,2,3,4列(索引值)
df.iloc[[100,105,108],[2,3,4]]



 

 

 

泰坦尼克專案內容

#匯入包
import numpy as np
import pandas as pd

#絕對目錄匯入檔案
df = pd.read_csv('/Users/mofashipython/train.csv')

#把列標籤改成中文
df = pd.read_csv('train.csv', names=['乘客ID','是否倖存','倉位等級','姓名','性別','年齡','兄弟姐妹個數','父母子女個數','船票資訊','票價','客艙','登船港口'],index_col='乘客ID',header=0)

#查詢空值
df.isnull().head()

 

#檢視資訊(資料結構)
df.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 是否倖存 891 non-null int64
1 倉位等級 891 non-null int64
2 姓名 891 non-null object
3 性別 891 non-null object
4 年齡 714 non-null float64
5 兄弟姐妹個數 891 non-null int64
6 父母子女個數 891 non-null int64
7 船票資訊 891 non-null object
8 票價 891 non-null float64
9 客艙 204 non-null object
10 登船港口 889 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB

 

#根據票價,年齡,降序排序
text.sort_values(by=['票價', '年齡'], ascending=False).head(10)

分析:10個票價最高(相對富有)的人中,8個人存活。富有的人存活概率大

 

#票價列的常用統計值
text['票價'].describe()

count 891.000000
mean 32.204208
std 49.693429
min 0.000000
25% 7.910400
50% 14.454200
75% 31.000000
max 512.329200
Name: 票價, dtype: float64

 

分析:

平均值約為:32.20,
標準差約為49.69,票價波動大

中位數14.45 遠低於平均數
75% 31.00 接近平均數

 

相關文章