数据分析入门,实例泰坦尼克号

本文基于Datawhale提供泰坦尼克号数据分析问题实例,对于程序解释均在代码后的注释中。

均为本人理解,如有不足或错误地方欢迎补充批评指正,如有侵权,联系速删。

数据的读取修改及存储

import pandas as pd
import numpy as np

df = pd.read_csv('train.csv')  
# 读取train.csv文件,相对路径,当该文件处于该程序文件中可以使用
df.head(3)  # 读取前三行数据
df = pd.read_csv('E:/pythonProject2/train.csv')  
# 绝对路径,可以让程序直接寻找在其文件外的目标文件
df.head(3)

chunker = pd.read_csv('train.csv', chunksize=1000)  
# 将读取目标文件每一千个行为划分一个模块,按模块提取
df = pd.read_csv('train.csv',
                 names=['乘客ID', '是否幸存', '仓位等级', '姓名', '性别', '年龄', '兄弟姐妹个数', '父母子女个数', '船票信息', '票价', '客舱', '登船港口'],
                 index_col='乘客ID', header=0) 
# 读取目标文件,将表头依次修改,将索引修改
# names:指定每一列的名称,如果文件中不包含header的行,应显性表示header=None。
# index_col:索引,默认None用列名作为目标文件的行标签,若给出序列则用Multilndex(复合索引)。
# header=0:替代原始列名
df.head()  # 读取目标文件的所有行

df.head(10)
df.tail(15)  
# 观察表格前10行的数据和后15行的数据 可直接将其写入print()观察输出
df.isnull().head()  
# 判断数据是否为空,为空的地方返回True,其余地方返回False 可直接将其写入print()观察输出
df.to_csv('train_chinese.csv')  
# 将你加载并做出改变的数据,在工作目录下保存为一个新文件

 建立简单的Series和DataFrame的表格,并筛选数据

​
import numpy as np
import pandas as pd

sdata = {'Ohio': 35000, 'Texas': 71000, 'Oregon': 16000, 'Utah': 5000}
example_1 = pd.Series(sdata)  
# 标题列向排列,横向表格
# print(example_1)

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)  
# 标题横向排列,列向表格
# print(example_2)

df = pd.read_csv('E:/pythonProject1/train.csv')  # 读取文件
df.head(3)
df.columns  # 查看DataFrame数据的每列的名称
df['Cabin'].head()  # 查看"Cabin"这列的所有值
df.Cabin.head()  # 查看"Cabin"这列的所有值

# 删除 为保证下列程序正常运行,故设为备注
# test_1 = pd.read_csv('test_1.csv')
# test_1.head(3)
# del test_1['a']  # 'a'为要删除的列名
# test_1.head(3)  # 删除多余的列

# 筛选逻辑
df[df["Age"] < 10].head(3)  # 输出满足条件的列表
a = df[(df["Age"] > 10) & (df["Age"] < 50)]  # 将满足条件的表格信息的数据命名为a
a.head(3)  # 输出
a = a.reset_index(drop=True)
a.head(3)
print(a.loc[[100], ['Pclass', 'Sex']])
print(a.loc[[100, 105, 108], ['Pclass', 'Name', 'Sex']])  
# 使用loc方法将a的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
print(a.iloc[[100, 105, 108], [2, 3, 4]])  
# 使用iloc方法将a的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
# 在iloc中列用数字的方式表达,而loc中为列的名称表达

​

实现简单的排序 

import numpy as np
import pandas as pd

text = pd.read_csv('train_chinese.csv')  # 相对路径
text.head()  # 所有数据

frame = pd.DataFrame(np.arange(8).reshape((2, 4)),
                     index=['2', '1'],
                     columns=['d', 'a', 'b', 'c'])
# 生产一个形状为2—4的巨星数组,index:命名行名称,columns:命名列名称
print(frame)
frame.sort_values(by='c', ascending=False)  
# 按列升序排列 可在末尾加.head()来确定操作范围
frame.sort_index()  
# 让行索引升序排序
frame.sort_index(axis=1)  
# 让列索引升序排序
frame.sort_index(axis=1, ascending=False)  
# 让列索引降序排序
frame.sort_values(by=['a', 'c'])  
# 让任选两列数据同时降序排序

# 矩阵运算
frame1_a = pd.DataFrame(np.arange(9.).reshape(3, 3),
                        columns=['a', 'b', 'c'],
                        index=['one', 'two', 'three'])
frame1_b = pd.DataFrame(np.arange(12.).reshape(4, 3),
                        columns=['a', 'e', 'c'],
                        index=['first', 'one', 'two', 'second'])
print(frame1_a+frame1_b)
# 两个DataFrame相加后,会返回一个新的DataFrame,对应的行和列的值会相加,没有对应的会变成空值NaN。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沈走天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值