文章目录
一、认识 pandas
1.1 pandas有两个数据类型DateFrame和Series
import numpy as np
import pandas as pd
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)
example_1
Ohio 35000 Texas 71000 Oregon 16000 Utah 5000 dtype: int64
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
'year': [2000, 2001, 2002, 2001, 2002, 2003],'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
example_2 = pd.DataFrame(data)
example_2
1.2 载入数据
df = pd.read_csv('/Users/chenandong/Documents/datawhale数据分析每个人题目设计/titanic/train.csv')
df.head(3)
1.3 查看DataFrame数据的每列的名称
df.columns
Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'], dtype='object')
1.4 查看"Cabin"这列的所有值
1.4.1 方法一
df['Cabin'].head(3)
0 NaN 1 C85 2 NaN 3 C123 4 NaN Name: Cabin, dtype: object
1.4.2 方法二
df.Cabin.head(3)
0 NaN 1 C85 2 NaN 3 C123 4 NaN Name: Cabin, dtype: object
1.5 对比两个文件,将多出的列删除
经过我们的观察发现一个测试集test_1.csv有一列是多余的,我们需要将这个多余的列删去
test_1 = pd.read_csv('test_1.csv')
test_1.head(3)
1.5.1 方法一
# 删除多余的列
del test_1['a']
test_1.head(3)
1.5.2 方法二
# 删除多余的列
df = test_1.drop(columns=['a'])
df.head(3)
1.6 隐藏元素
将[‘PassengerId’,‘Name’,‘Age’,‘Ticket’]这几个列元素隐藏,只观察其他几个列元素
df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
【思考回答】
如果想要完全的删除你的数据结构,使用inplace=True,因为使用inplace就将原数据覆盖了,所以这里没有用
二、筛选数据
表格数据中,最重要的一个功能就是要具有可筛选的能力,选出我所需要的信息,丢弃无用的信息。
2.1 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息。
df[df["Age"]<10].head(3)
2.2 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage.head(3)
2.3 将特定行数据显示出来
2.3.1 将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来
midage = midage.reset_index(drop=True) # 重新设置索引
midage.head(3)
【思考】这个reset_index()函数的作用是什么?如果不用这个函数,下面的任务会出现什么情况?
作用:使用索引重置生成一个新的DataFrame或Series,可以把索引用作列。如果不想保留原来的index,使用参数drop=True,重新排序。默认参数为False。
midage.loc[[100],['Pclass','Sex']]
Pclass Sex 100 2 male
2.3.2 使用loc方法将midage的数据中第100,105,108的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
2.3.3 使用iloc方法将midage的数据中第100,105,108的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]
2.3.3.1 对比iloc
和loc
的异同!
data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))
print(data)
w x y z
A 0 1 2 3
B 4 5 6 7
C 8 9 10 11
D 12 13 14 15
- loc——通过行标签索引行数据
print(data.loc["A"])
w 0 x 1 y 2 z 3
- iloc——通过行号索引行数据
print(data.iloc[0])
w 0 x 1 y 2 z 3