#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
:Description:
:Owner:
:Create time: 2022/1/10
"""
# 1.1载入数据
# 1.1.1 任务一:导入numpy和pandas
import numpy as np
import pandas as pd
import os
# 1.1.2 任务二:载入数据
#(1)使用相对路径
# data = pd.read_csv('./titanic/test.csv')
# (2)使用绝对路径
# print os.getcwd() D:\python\pythonPro\DataWhale 获取当前的绝对路径
data = pd.read_csv(r'D:\python\pythonPro\DataWhale\titanic\test.csv')
#【拓展】
# 此时可以看出,该数据行和列的数据并不能完全显示出来,可以使用pandas的特定设置
# 显示全部的列数
pd.set_option('display.max_columns',None)
# 显示全部的行数
pd.set_option('display.max_rows',None)
#设置数据的显示长度(解决自行换行)
pd.set_option('display.width',None)
data1 = pd.read_table('./titanic/test.csv',sep=',')
# 1.1.3任务三:每1000行为一个数据模块,逐块读取
chunk = pd.read_csv('./titanic/test.csv',chunksize=10)
# 使用逐块读取的好处:他的本质就是将文本分成若干块,每次处理chunksize行的数据,最终返回一个TextParaser对象
# 可对该对象进行遍历,可以完成逐块统计的合并处理
df = pd.read_csv('./titanic/train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
# 1.2 初步观察
# 1.2.1任务一:查看数据的基本信息
df.info()
# 1.2.2 任务二:观察表格前10行和后10行数据
print df.head(10)
print df.tail(10)
# 1.2.4 任务三:判断数据是否为空,为空的地方返回True,其余地方返回False
print df.isnull().head()
# 1.3 将数据进行保存
df.to_csv('./titanic/chinese_train.csv')
# 1.4 知道你的数据叫什么
# 1.4.1 任务一:了解pandas数据结构中的Series和DataFrame
# Series:类似表格中的一个列,类似于一维数组,可以保存任何数据类型
# pandas.Series(data,index,dtype,name,copy)
myvar = pd.Series([1,2,3,4])
# 可以指定索引值读取数据
print myvar[1]
# 指定索引值
myvar = pd.Series([1,2,3,4],index= ['x','y','z','u'])
print myvar['z']
# 可以使用key/value对象,类似字典来创建Series
sites = {1:'Google',2:'Rubbo',3:'wiki'}
myvar1 = pd.Series(sites)
print myvar1
# 如果我们只需要字典中的一部分数据,只需要指定需要数据的索引即可
myvar2 = pd.Series(sites,index=[1,2])
print myvar2
#设置Series名称参数
myvar3 = pd.Series(sites,index = ['2','3'],name="adasf")
print myvar3
# DataFrame:是一个表格型的数据格式,它含有一组有序的列,每列可以是不同的值类型(数值,字符串,布尔型)。
# DataFrame既有行索引也有列索引
# pandas.DataFrame(data,index,columns,dtype,copy)
data2 = [['Google',10],['Runoo',12],['wiki',13]]
df1 = pd.DataFrame(data2,columns=['name','age'],dtype=float)
df2 = pd.DataFrame({'name':['Google','Runoo'],'Age':[13,34]},index=['x','y'])
df3 = pd.DataFrame([{'a':1,'b':2},{'a':5,'b':10,'c':20}])
# pandas可以使用loc属性返回指定行的数据,如果没有设置索引
data3 = {"calories":[420,3380,390],"duration":[50,40,45]}
df4 = pd.DataFrame(data3)
print df4
print df4.loc[0] #返回第一行
print df4.loc[1] # 返回第二行
print df4.loc[[0,1]]# 返回第一行和第二行
print df2.loc['x'] # 可以通过指定索引
print df2[['name']]
# 1.4.2 任务二: 导入"train.csv"
train_data = pd.read_csv("./titanic/train.csv")
import time
t1 = time.time()
# 1.4.3 任务三:查看DataFrame数据的每列的名称
train = pd.DataFrame(data).columns
# 1.4.4 任务四:查看"Cabin"这列的所有值
train_4 = train_data['Cabin']
# 1.4.5 任务五:加载文件"test_1.csv",然后对比"train.csv"
test_data = pd.read_csv('./titanic/test.csv')
train_data1 = pd.read_csv('./titanic/train.csv')
# 在数据分析过程中,有时处于增强数据可读性或者其他原因,需要对数据表的索引值进行设定。
# 通常使用set_idex()与reset_index()这两个函数索引设置。
# df = pd.DataFrame({'Country': ['China', 'China', 'India', 'India', 'America', 'Japan', 'China', 'India'],
#
# 'Income': [10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],
#
# 'Age': [50, 43, 34, 40, 25, 25, 45, 32]})
#
# df_delete = df.set_index('Country')
#
# df_new = df_delete.reset_index(drop = False)
# print df_new
# 利用Pandas对数据进行排序,要求升序
frame = pd.DataFrame(np.arange(8).reshape(2,4),index=['2','3'],columns=['b','d','a','c'])
# 在大多时候,我们都是根据列的值进行排列
frame.sort_values(by='c',ascending=True)
#让行索引升序排列
frame.sort_index()
# 让列索引升序排列
frame.sort_index(axis=1)
#让列索引降序排列
frame.sort_index(axis=1,ascending=False)
# 让任意选两列数据同时降序排列
frame.sort_values(by=['b','c'],ascending=False)
print frame.sort_values(by=['b','c'],ascending=False)
# 任务二:对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么
train_data2 = df.sort_values(by=['票价','年龄'],ascending=False)
# 任务三:两个DataFrame数据进行相加
a = pd.DataFrame(np.arange(12.0).reshape(3,4),index=['1','2','3'],columns=['a','c','d','g'])
b = pd.DataFrame(np.arange(8.0).reshape(2,4),index=['3','4'],columns = ['a','b','c','d'])
print a+b
# 任务四:通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
print max(train_data2['兄弟姐妹个数']+train_data2['父母子女个数'])
# 任务五:学会使用Pandas describe()函数查看数据基本统计信息
frame2 = pd.DataFrame([[1.4, np.nan],
[7.1, -4.5],
[np.nan, np.nan],
[0.75, -1.3]
], index=['a', 'b', 'c', 'd'], columns=['one', 'two'])
print frame2.describe()
# 分别看看泰坦尼克号数据集中 票价、父母子女 这列数据的基本统计数据
print train_data2['票价'].describe()
print train_data2['父母子女个数'].describe()
【数据分析】Text1
最新推荐文章于 2024-07-25 20:07:39 发布