7月动手学数据分析_TASK01—第一章

本章总共分为三节, 第一章:第一节数据载入及初步观察、第二节pandas基础、第三节探索性数据分析;

第一节:
1.熟悉pandas下的载入数据
【思考】知道数据加载的方法后,试试pd.read_csv()和pd.read_table()的不同,如果想让他们效果一样,需要怎么做?了解一下’.tsv’和’.csv’的不同,如何加载这两个数据集?
答:1)read_csv() 读取以‘,’分割的文件到DataFrame;read_table()读取以‘/t’分割的文件DataFrame;
实质上是通用的,在实际使用中可以通过对sep参数的控制来对任何文本文件读取。
2)文件类型.csv的字段间分隔符为’,’,文件类型.tsv的字符间的分隔符为制表符(Tab,’\t’)
eg:train=pd.read_csv(‘test.tsv’, sep=’\t’)

2.数据预览
2.1 任务一:查看数据的基本信息
df.info()
2.2 任务二:观察表格前10行的数据和后15行的数据
df.head(10)
df.tail(15)
2.3 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull().head()
附加;
统计各个值的范围 针对数值数据而已
df.describe()
3.保存数据
df.to_csv(‘train_chinese.csv’, encoding = ‘GBK’)

第二节:
1.查看行列信息
1.1查看DataFrame数据的每列的名称
df.columns
1.2查看某列所有数值
df.Cabin

df[‘Cabin’]
1.3关于删除
del df1[‘a’]
df1.drop(‘a’, axis=1).head(3)

【思考】df1.drop(‘a’, axis=1, inplace=True)
inplace参数的理解:
修改一个对象时:
inplace=True:不创建新的对象,直接对原始对象进行修改;
inplace=False:对数据进行修改,创建并返回新的对象承载其修改结果

1.4筛选
1.4.1 我们以"Age"为筛选条件,显示年龄在10岁以下的乘客信息
df = pd.read_csv(‘train.csv’)
法一;
df[df[‘Age’]<10].head(3)
法二;
df[df.Age<10].head(3)
1.4.2 任务二: 以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage = df[(df[‘Age’]>10)&(df[‘Age’]<50)]
midage.head(20)

由上面可发现索引不连续情况,下面将进行处理

1.4.3 任务三:将midage的数据中第100行的"Pclass"和"Sex"的数据显示出来

https://www.cnblogs.com/keye/p/11229863.html

midage = midage.reset_index(drop=True)
midage.loc[[100],[‘Pclass’,‘Sex’]]
reset_index()是重置索引,在获得新的index,原来的index变成数据列,保留下来。( 而drop=True是表示不想保留原来的index,默认 False) 如此处理的原因:因为前面对数据进行了筛选,所以索引不再是连续的了。
1.4.4 任务四:使用loc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],[‘Pclass’,‘Name’,‘Sex’]]
1.4.5任务五:使用iloc方法将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.iloc[[100,105,108],[2,3,4]]

【思考】对比ilocloc 的异同
答:iloc的列参数只能是整数;loc的列参数不能是整数。

第三节:
1.导入train_chinese.csv数据
之前train_chinese.csv多生成一行索引做常规列了,需要进行处理

删除掉unnamed那一行

text.drop(‘Unnamed: 0’,axis = 1,inplace = True) #axis参数默认为0
text.head()
2.各种排序降序
‘’’
我们举了一个例子
pd.DataFrame() :创建一个DataFrame对象
np.arange(8).reshape((2, 4)) : 生成一个二维数组(2*4),第一行:0,1,2,3 第二行:4,5,6,7
index=[2,1] :DataFrame 对象的索引行
columns=[‘d’, ‘a’, ‘b’, ‘c’] :DataFrame 对象的索引列
‘’’

sort_values的by参数指向要排列的列,ascending参数True指向降序的方式,False指向升序;可以看出索引是跟着排序走的

data1 = data.sort_values(by=‘c’, ascending=True)

让行索引升序排序

data3 = data.sort_index()

让列索引升序排序

data4 = data.sort_index(axis=1)

让列索引降序排序

data5 = data.sort_index(axis=1, ascending=False)

让任选两列数据同时降序排序

data2 = data.sort_values(by=[‘a’, ‘c’], ascending=False)

####项目例子略
3. 利用Pandas进行算术计算,计算两个DataFrame数据相加结果
‘’’
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
‘’’

将frame_a和frame_b进行相加

frame1_a + frame1_b

3. 学会使用Pandas describe()函数查看数据基本统计信息
frame2.describe()
‘’’
count : 数据的数量,排除Nan
mean : 数据的平均值
std : 数据的标准差
min : 数据的最小值
25% : 数据25%的时候的值
50% : 数据50%的时候的值
75% : 数据75%的时候的值
max : 数据的最大值
‘’’
例如:
text[‘年龄’].describe()
count 714.000000
mean 29.699118
std 14.526497
min 0.420000
25% 20.125000
50% 28.000000
75% 38.000000
max 80.000000
Name: 年龄, dtype: float64
【思考】一共有714个数据, 注意已经滤除了Nan的数据,平均值约为:29.699118, 标准差约为14.526497, 25%的人的年龄是低于20.125的,50%的人的年龄低于28,75%的人的票价低于38,, 父母与小孩个数最大值约为80,最小值为0.42(五六个月的婴儿)。可以看出年龄层主要集中在中青年层上。