Python中的Pandas
Pandas
Pandas是用于数据分析的
在本文中,我们用titanic.csv的数据进行分析
https://raw.githubusercontent.com/GokuMohandas/practicalAI/master/data/titanic.csv
一、加载数据
import pandas as pd
# Read from CSV to Pandas DataFrame
df = pd.read_csv("titanic.csv", header=0)
二、数据分析
1、查看数据前n行
# First five items
df.head(5)
输出结果:
- 注:这些是不同的特点:
pclass: 人物阶级
name: 乘客的全名
sex: 性别
age: 数值年龄
sibsp: #兄弟姐妹/配偶登船
parch: 父母/孩子的数量
ticket: 票号
fare: 票价
cabin: 位置的空间
emarked: 乘客登船的港口(C -瑟堡,S -南安普顿,Q =昆士城)
survives: 是否生存(0 -死亡,1 -活了下来)
2、查看数值型列的汇总统计
# Describe features
df.describe()
输出结果:
3、画出某一项的直方图
# Histograms
df["age"].hist()
输出结果:
4、唯一值
# Unique values
df["embarked"].unique()
输出结果:
array(['S', 'C', nan, 'Q'], dtype=object)
5、根据特征选择数据
# Selecting data by feature
df["name"].head()
输出结果:
6、筛选信息
# Filtering
df[df["sex"]=="female"].head() # only the female data appear
输出结果:
7、按照某一列降序排列数据
# Sorting
df.sort_values("age", ascending=False).head()
输出结果:
8、分组
# Grouping
survived_group = df.groupby("survived")
survived_group.mean()
输出结果:
9、按行选取数据
# Selecting row
df.iloc[0, :] # iloc gets rows (or columns) at particular positions in the index (so it only takes integers)
输出结果:
10、按位置选取数据
# Selecting specific value
df.iloc[0, 1]
输出结果:
11、按索引选取数据
# Selecting by index
df.loc[0] # loc gets rows (or columns) with particular labels from the index
输出结果:
三、数据处理
1、具有至少一个NaN值的行
# Rows with at least one NaN value
df[pd.isnull(df).any(axis=1)].head()
输出结果:
2、删除具有Nan值的行
# Drop rows with Nan values
df = df.dropna() # removes rows with any NaN values
df = df.reset_index() # reset's row indexes in case any rows were dropped
df.head()
输出结果:
3、删除多个列
# Dropping multiple columns
df = df.drop(["name", "cabin", "ticket"], axis=1) # we won't use text features for our initial basic models
df.head()
输出结果:
4、映射特性值
# Map feature values
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()
输出结果:
四、特征工程
1、用于创建新特性的Lambda表达式
# Lambda expressions to create new features
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()
输出结果:
2、重组头
# Reorganize headers
df = df[['pclass', 'sex', 'age', 'sibsp', 'parch', 'family_size', 'fare', 'embarked', 'survived']]
df.head()
输出结果:
五、保存数据
# Saving dataframe to CSV
df.to_csv("processed_titanic.csv", index=False)
# See your saved file
!ls -l