动手学数据分析-Task01-数据加载及探索性数据分析
踩坑记录1: 在使用jupyter notebook 切换不同虚拟环境的时候,一定要在该虚拟环境下安装ipykernel。
python -m pip install ipykernel
踩坑记录2: 在使用pd.read_csv用绝对路径读取文件时,在windows环境中不同文件夹用 \\ 隔开,如果文件名中含有s,可能会和前面的\\组合成\s转义,可在整体路径前加入r即可
data = pd.read_csv("D:\\File\\jupyter-notebook\\hands-on-data-analysis-master\\第一单元项目集合\\train.csv")
如果文件名中含有s,可能会和前面的\\组合成\s转义,可在整体路径前加入r即可
data = pd.read_csv(r"D:\\File\\jupyter-notebook\\hands-on-data-analysis-master\\第一单元项目集合\\train.csv")
1.1数据载入及初步观察
1.1数据载入
这些函数都会把文本数据转换为DataFrame结构。 如果数据量太大,内存无法一次读入时,可以设置chunksize参数大小,逐块读取。
import pandas as pd
data = pd.read_csv(path, chunksize=1000,,iterator=True)
count = 0
for chunk in data:
count += 1
if count ==1:
chunk.to_csv('test1.csv',index = False)
elif count>1 and count<1000:
chunk.to_csv('test1.csv',index = False, mode = 'a',header = False)
else:
break
pd.read_csv('test1.csv')
修改表头时,可以直接在读取的时候在name参数里更改
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
index_col表示索引
1.2 初步观察(数据类型都为DataFrame)
查看数据的基本信息
data.info()
查看前十行或后十行
data.head(10)
data.tail(10)
判断数据是否为空,空为True,否则为False
data.isnull()
查看个数
data.count()
1.1.3 保存数据
data.to_csv('test1.csv',encoding='utf-8')
2.pandas基础
2.1 两种数据结构
Series
由一组数据以及与之相关的索引组成的类似一维数组的结构。类似与python中的字典
sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)
DataFrame
dataframe是一种表格型的数据结构,它包含一组有序的列,每一列之间的数据类型可以不同
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)
基本操作
查看dataframe数据的每列的名称
df.columns
查看某一列的值
df.state
df['state']
删除多余的列
del df['state']
axis表示轴,axis=0表示行索引,竖着看,axis=1表示列索引,横着看 隐藏某几列元素,只看其中几列
df.drop(['PassengerId','Name','Age','Ticket'],axis=1)
使用inplace=True,可以覆盖原数据
数据清洗时,会将带空值的行删除,此时DataFrame或Series类型的数据不再是连续的索引,可以使用reset_index()重置索引。 不想保留原来的index,使用参数 drop=True
midage = midage.reset_index(drop=True)
显示某几行,某几列的数据
midage.loc[[100,105,108],['Pclass','Name','Sex']]
也可以使用iloc方法,那么列索引就要变为其下标
midage.iloc[[100,105,108],[2,3,4]]
3 探索性数据分析
根据某一列的值对所有数据进行排序,ascending=True表示升序
frame.sort_values(by='c', ascending=True)
让行索引升序排序
frame.sort_index()
让列索引升序排序
frame.sort_index(axis=1)
查看数据的基本情况
frame2.describe()
'''
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
'''
|