Python数据分析(1)——数据加载与简单描述性分析

1.读入文件

本文通过kaggle泰坦尼克号数据进行分析介绍。(这里利用-Titanic - Machine Learning from Disaster数据https://www.kaggle.com/c/titanic/overview

1.1 通过Python标准库导入

此处读取的文件为csv格式,Python中提供了一个表准的类库来处理csv文件。其读取方式如下,导入的数据按Numpy生成一个元组。

import numpy as np
import pandas as pd#导入numpy与pandas
from csv import reader
df='train.csv'
with open(df,'rt',encoding='UTF-8') as raw_data:
    readers = reader(raw_data, delimiter=',')#界定符 ' ,'
    x = list(readers)
    data = np.array(x)
    print(data)
    print(data.shape)

在这里插入图片描述

1.2 通过Pandas导入

  • 通过pandas.read_csv()函数实现,该函数返回DataFrame(读取文件的方式有绝对路径与相对路径两种)。

  • 或通过pandas.read_table()函数实现,该函数返回DataFrame,与read_csv不同的是其中sep分隔符不同,read_csv默认’,'而read_table默认为tab制表符,而txt与csv相比的优势在于体积更小。

#data1 = pd.read_csv('train.csv')
#data1.head(3)
data1=pd.read_table('train.csv',sep=',', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
data1.head()#将英文表头转为中文

在这里插入图片描述

1.3 逐块读取数据

对于较大的cxv文件使用read_csv打开时可能会出现:MemoryError的报错,所以我们在读时采用chunk分块读取,再把所有chunk拼接成一个DataFrame(通过concat)。

chunker = pd.read_csv('train.csv',iterator = True , chunksize = 1000)
type(chunker)

list_c = list()
for chunk in chunker:
    list_c.append(chunk)
    #print(chunk, type(chunk))
res = pd.concat(list_c,axis=0,ignore_index=False)
print(res)

在这里插入图片描述
此外chunk还可以指定某一块进行读取。

2.初步分析

2.1 简单描述性统计

data1.info()#查看基本信息
data1.isnull().head()#查看缺失值
data1.head(10)#查看前10行
data1.tail(10)#查看后10行
#或者直接调用describe函数
data1.describe()#该函数返回数量、均值、最大最小值、标准差及四分位点,为查找异常值提供信息

在这里插入图片描述

test_1 = pd.read_csv('test.csv')#导入测试集
test_1.head(3)
#del test_1['a']# 删除某一列
#test_1.head(3)
data1.drop(['PassengerId','Name','Age','Ticket'],axis=1).head(3)#将['PassengerId','Name','Age','Ticket']这几个列元素隐藏

在这里插入图片描述

2.2提取特定行列

利用reset_index:重置索引和其他level
参数:reset_index(level=None,drop=False,inplace=False,col_level=0,col_fill=‘’)

  • drop: 重新设置索引后是否将原索引作为新的一列并入DataFrame,默认值False 。
  • inplace: 是否在原有DataFrame上改动,默认值False 。
  • level: 如果索引(index)有多个列,仅从索引中删除level指定的列,默认删除所有列 。
  • col_level: 如果列名(columns)有多个级别,决定被删除的索引将插入哪个级别,默认插入第一级。
  • col_fill: 如果列名(columns)有多个级别,决定其他级别如何命名。
midage = test_1[(test_1["Age"]>10)& (test_1["Age"]<50)]#以"Age"为条件,将年龄在10岁以上和50岁以下的乘客信息显示出来,并将这个数据命名为midage
midage.head(3)
midage = midage.reset_index(drop = True)#drop:False表示重新设置索引后将原索引作为新的一列并入DataFrame,True表示删除原索引 
midage.loc[[100,105,108],['Pclass','Name','Sex']] #若不进行上述reset_index,此处会报错不存在 108 该索引

在这里插入图片描述

2.3对数据进行排序

sort_values()用于对数据进行排序

  • by:指定需要排序的行或者列
  • axis:指明需要排序的是还是列
  • ascending:指明升序还是降序,默认升序
data1.sort_values(by=['票价', '年龄'], ascending=False).head(3)

在这里插入图片描述
本文就先到这里叭

友情链接

欢迎拜访(https://github.com/datawhalechina/hands-on-data-analysis/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值