第一章:数据加载
1.1载入数据
1.1.1 导入numpy和pandas
import numpy as np
import pandas as pd
import os
1.1.2 载入数据
下载数据集train.csv和test.csv文件
read_csv()
# 相对路径载入数据
os.getcwd() # 查看相对路径
pf.read_csv('train.csv')
df.head(3) #查看前三行的数据
# 绝对路径载入数据
path=os.path.abspath('train.csv') # 查看绝对路径
pd.read_csv(path)
read_table()
# 默认分隔符为制表符
pd.read_table("train.csv")
# 修改分隔符为逗号
pd.read_table("train.csv",sep=",")
TSV文件和CSV的文件的区别是:前者使用\t
作为分隔符,后者使用","作为分隔符.类似的读取xlsx文件:pd.read_excel(),返回DataFrame类型的数据
1.1.3:每1000行为一个数据模块,逐块读取
# 设置每1000行读取,TextFileReader类型
chunker = pd.read_csv('train.csv',chunksize=1000,iterator=True)
# TextFileRead类型的数据需要迭代读取或者使用get_chunk()或者转换成DataFrame类型
chunker.get_chunk()
1.1.4:将表头改成中文,索引改为乘客ID
#方法1
df.columns = ['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口']
#方法2:读取文件时重命名,但是英文成了第一行
pd.read_csv('train.csv',names=['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口'])
1.2初步观察
1.2.1:查看数据的基本信息
de.info() # 查看数据的类型和属性
df.describe() # 统计数据信息,个数,均值。方差,最小值等
1.2.2:观察表格前10行的数据和后15行的数据
df.head(10) # 前10行
df.tail(15) # 后15行
1.2.4:判断数据是否为空,为空的地方返回True,其余地方返回False
df.isnull()
1.3:保存数据
df.to_csv("train_chinese.csv")
#中文乱码解决
df.to_csv("train_chinese.csv",encoding="utf_8_sig")
2.pandas基础
sdata = {'a':1,'b':2,'c':3}
example = pd.Series(sdata)
daya = {'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]} # 以每一列的名字为头创建
df.columns # 查看DataFrame数据每列的名称
df['Cabin'].head(3) # 查"看Cabin"前三行的值
df.Cabin.head(3)
# 删除指定的列
df.drop(['a'], axis=1) # axis=1表示列,0表示行,方法1
del df['a'] # 方法2
# 将指定列隐藏,如果想要完全的删除你的数据结构,使用inplace=True,将原数据覆盖了
df.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)
# "Age"为筛选条件,显示年龄在10岁以下的乘客信息
df[df['Age']<10]
# 10-50岁之间的乘客信息
df[(df["Age"]>10)& (df["Age"]<50)]
# 将数据中第100行的"Pclass"和"Sex"的数据显示出来
df.loc[[100],['Pclass','Sex']]
# 重新设置下标,从小到大排序
midage = midage.reset_index(drop=True)
# loc方法显示多行
midage.loc[[100,105,108],['Pclass','Name','Sex']]
# iloc方法显示多行
midage.iloc[[100,105,108],[2,3,4]]
3.探索性数据分析
1.读取数据
text = pd.read_csv('train_chinese.csv')
text.head()
2.对数据进行排序,要求升序
frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
index=['2','1'],
columns=['d', 'a', 'b', 'c'])
frame.sort_values(by='c', ascending=True) # 对值排序,ascending=True为升序,false为降序
frame.sort_index() # 对索引排序,默认为行索引升序
frame.sort_index(axis=1) # 对列索引升序排序
frame.sort_index(axis=1, ascending=False) # 列索引降序
# 让任选两列数据同时降序排序
frame.sort_values(by=['a', 'c'], ascending=False)
3.算术计算
相加,对应索引的值进行相加,其他值为NaN,同理减乘除。