【数据分析】Text1

#!/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()









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值