熊貓包是一個非常好用滴數(shù)據(jù)分析包~
加載數(shù)據(jù)
1、導(dǎo)入pandas庫
import pandas as pd
2萧诫、導(dǎo)入CSV或者XLSX文件
(導(dǎo)入csv文件時酥馍,將header設(shè)置為None對于有表頭的數(shù)據(jù)會報(bào)錯烤镐,應(yīng)改為header=0)
#此次導(dǎo)入的是泰坦尼克號數(shù)據(jù)集...
df = pd.read_csv("titanic.csv", header=0)
3、顯示前5行數(shù)據(jù)
df.head() #head的默認(rèn)size大小是5西设,所以會返回5個數(shù)據(jù)
探索性分析
1瓣铣、敘述性分析
df.describe()
describle會輸出一些統(tǒng)計(jì)性的數(shù)據(jù),count济榨、mean坯沪、std、min....
2擒滑、直方圖
df["Age"].hist() #輸出age的直方圖
3腐晾、唯一值
df["Embarked"].unique() #輸出Embarked獨(dú)樹一幟的量
df["embarked"].unique()
output:
array(['S', 'C', nan, 'Q'], dtype=object)
4、按列名查看
df["Name"].head()
5丐一、篩選數(shù)據(jù)
df[df["sex"]=="female"].head() # only the female data appear
6藻糖、排序
df.sort(,) #第一個參數(shù)是某列,ascending(meaning:上升) =False代表降序輸出
df.sort_values("age", ascending=False).head()
7库车、數(shù)據(jù)聚合
survived_group = df.groupby("survived")
survived_group.mean()
8巨柒、使用索引用 iloc 查看數(shù)據(jù)
df.iloc[0, :]
# iloc 函數(shù)通過索引中的特定位置查看某行或列的數(shù)據(jù),所以這里的索引值應(yīng)該只接受整數(shù)
9柠衍、獲取指定位置的數(shù)據(jù)
df.iloc[0, 1]
'Allen, Miss. Elisabeth Walton'
10洋满、根據(jù)索引值用 loc 查看
df.loc[0] # 用loc從索引中插卡具有特定標(biāo)簽的行或列
預(yù)處理
# 查看含有至少一個NaN值的數(shù)據(jù)
df[pd.isnull(df).any(axis=1)].head()
# 刪除含有NaN值的數(shù)據(jù)行
df = df.dropna() # 刪除含有NaN值的行
df = df.reset_index() # 重置行的索引
df.head()
# 刪除多列
df = df.drop(["name", "cabin", "ticket"], axis=1) # 暫時不需要類型為文本的數(shù)據(jù)條目
df.head()
# 特征值映射
df['sex'] = df['sex'].map( {'female': 0, 'male': 1} ).astype(int)
df["embarked"] = df['embarked'].dropna().map( {'S':0, 'C':1, 'Q':2} ).astype(int)
df.head()
特征工程
# 用lambda表達(dá)式創(chuàng)建新特征
def get_family_size(sibsp, parch):
family_size = sibsp + parch
return family_size
df["family_size"] = df[["sibsp", "parch"]].apply(lambda x: get_family_size(x["sibsp"], x["parch"]), axis=1)
df.head()
# 重新組織表頭
df = df[['pclass', 'sex', 'age', 'sibsp', 'parch', 'family_size', 'fare', 'embarked', 'survived']]
df.head()
存儲數(shù)據(jù)
# 把Dataframe存進(jìn)CSV文件
df.to_csv("processed_titanic.csv", index=False)