Datawhale学数据分析第一章
需要用到的基础知识
pandas基础知识
参考1,2章
https://github.com/datawhalechina/joyful-pandas
1.导入数据
tsv 制表符作为分隔符的字段符
csv 逗号作为分隔符的字段符
详情见利用python进行数据分析第6章
https://github.com/Knowledge-Discovery-in-Databases/team-learning/blob/master/%E7%AC%AC06%E7%AB%A0%20%E6%95%B0%E6%8D%AE%E5%8A%A0%E8%BD%BD%E3%80%81%E5%AD%98%E5%82%A8%E4%B8%8E%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F.md
```
#导入包
import numpy as np
import pandas as pd
import os
```
```
#查看当前工作目录,修改当前目录,命令行查看当前工作目录
print(os.getcwd())
os.chdir('/Users/mofashipython')
!pwd
/Users/mofashipython/prog/p
/Users/mofashipython
```
```
#当前工作目录导入文件
df = pd.read_csv('train.csv')
df.head() #查看开头5行,可设定参数
#绝对目录导入文件
df = pd.read_csv('/Users/mofashipython/train.csv')
df.tail() #查看末尾5行,可设定参数
```
```
#查看信息(数据结构)
df.info()
```
```
#分块
chunker = pd.read_csv('train.csv', chunksize=1000)
```
```
#修改行标签和列标签
df = pd.read_csv('file', names=name1,index_col='name2',header=0)
```
```
#查找空值
df.isnull().head()
```
```
#查看列名和行名
df.columns
df.index
```
```
#查看常用的统计数值
df.describe()
'''
count : 样本数据大小
mean : 样本数据的平均值
std : 样本数据的标准差
min : 样本数据的最小值
25% : 样本数据25%的时候的值
50% : 样本数据50%的时候的值
75% : 样本数据75%的时候的值
max : 样本数据的最大值
'''
```
```
df['列名'].describe()
```
```
#保存文件至当前目录
df.to_csv('train_chinese.csv')
```
2.pandas的基本使用方法
pandas中有两个数据类型DataFrame和Series
series,一维数据结构,由index和value组成。
dataframe,二维结构,拥有index和value和column。
dataframe由多个series组成,可以从series创建
```
#创建Series
v=[1,2,3,4,5]
i=[2,3,4,5,6]
s = pd.Series(v,index = i)
s
2 1
3 2
4 3
5 4
6 5
dtype: int64
```
```
#创建DataFrame
i =[1,2,3]
c =["one", "two", "three"]
v = np.random.rand(9).reshape(3,3)
d = pd.DataFrame(v, index = i, columns = c)
d
one two three
1 0.491216 0.826787 0.002878
2 0.751016 0.849535 0.738048
3 0.066599 0.268772 0.210717
```
```
#对应的行和列的值会相加,没有对应的会变成空值NaN
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'])
frame1_a + frame1_b
a b c e
first NaN NaN NaN NaN
one 3.0 NaN 7.0 NaN
second NaN NaN NaN NaN
three NaN NaN NaN NaN
two 9.0 NaN 13.0 NaN
```
3.常用的3种索引方法
df.iloc 位置(数字)索引
df.loc 名称(标签)索引
[] 切片索引
df.loc[行索引,列索引]
逗号隔开维度,loc 左闭右闭区间,可使用布尔型(true,false)
```
#全部行,Cabin列,输出前5个
df.loc[:,'Cabin'].head()
```
```
#重置索引,使用默认的行索引
#不保留原索引,需要参数drop=True
df= df.reset_index(drop=True)
```
```
#100,105,108行,Pclass,Name,Sex列(标签值)
df.loc[[100,105,108],['Pclass','Name','Sex']]
```
```
#100,105,108行,2,3,4列(索引值)
df.iloc[[100,105,108],[2,3,4]]
```
```
#条件查询(布尔型查询)
df[df["Age"]<10].head(3)
midage = df[(df["Age"]>10)& (df["Age"]<50)]
```
4.排序
sort_values 数值进行排序
sort_index 标签进行排序
```
i =[1,2,3]
c =["one", "two", "three"]
v = np.arange(9).reshape(3,3)
d = pd.DataFrame(v, index = i, columns = c)
d
one two three
1 0 1 2
2 3 4 5
3 6 7 8
#two列降序(从大到小)
d.sort_values(by='two',ascending = False)
one two three
3 6 7 8
2 3 4 5
1 0 1 2
#axis =1 维度是列,按照列名排序
d.sort_index(axis = 1,ascending = False)
two three one
1 1 2 0
2 4 5 3
3 7 8 6
#one列和three列升序(从小到大)
#首先排序one列,如果one列存在相同元素,排three列
#如果没有相同元素,不排three列
d.sort_values(by=['one','three'])
one two three
1 0 1 2
2 3 4 5
3 6 7 8
```
泰坦尼克项目内容
```
#导入包
import numpy as np
import pandas as pd
#绝对目录导入文件
df = pd.read_csv('/Users/mofashipython/train.csv')
#把列标签改成中文
df = pd.read_csv('train.csv', names=['乘客ID','是否幸存','仓位等级','姓名','性别','年龄','兄弟姐妹个数','父母子女个数','船票信息','票价','客舱','登船港口'],index_col='乘客ID',header=0)
#查看信息(数据结构)
df.info()
```
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 是否幸存 891 non-null int64
1 仓位等级 891 non-null int64
2 姓名 891 non-null object
3 性别 891 non-null object
4 年龄 714 non-null float64
5 兄弟姐妹个数 891 non-null int64
6 父母子女个数 891 non-null int64
7 船票信息 891 non-null object
8 票价 891 non-null float64
9 客舱 204 non-null object
10 登船港口 889 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB
```
#查找空值
df.isnull().head()
```
```
#根据票价,年龄,降序排序
text.sort_values(by=['票价', '年龄'], ascending=False).head(10)
```
10个票价最高(相对富有)的人中,8个人存活。
```
#票价列的常用统计值
text['票价'].describe()
```
count 891.000000
mean 32.204208
std 49.693429
min 0.000000
25% 7.910400
50% 14.454200
75% 31.000000
max 512.329200
Name: 票价, dtype: float64
平均值约为:32.20,
标准差约为49.69,票价波动大
中位数14.45 远低于平均数
75% 31.00 接近平均数
```
```
Datawhale学数据分析第一章的更多相关文章
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- 1-Spark高级数据分析-第一章 大数据分析
1.1 数据科学面临的挑战 第一,成功的分析中绝大部分工作是数据预处理. 第二,迭代与数据科学紧密相关.建模和分析经常需要对一个数据集进行多次遍历.这其中一方面是由机器学习算法和统计过程本身造成的. ...
- 《python可以这样学》第一章
一.Python基础 查看Python版本 Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AM ...
- 翻译学python---《Learn Python the hard Way》---第一章 绪论
打算学习python,但是又不想单纯地看书或是写个小项目,干脆引入很流行的翻译学习法来学习吧- 在论坛上看到了国外的一本<Learn Python the hard Way> ...
- 跟着高淇学Python——第一到第三章总结
2019/10/26 第一章:Python介绍 Python是一种解释型,面向对象的语言.特点是: 可读性强 简洁,简洁 面向对象 免费开源 可移植性和跨平台性 丰富的库 可扩展性 应用范围:1.人工 ...
- 按照鬼哥学so变化,四,第一章的例子
跟随鬼哥伦比亚科学so变化,四.第一章的例子 图纸/文化 听鬼哥说故事 ---------------------------------------------切割线--------------- ...
- 《跟我学Shiro》学习笔记 第一章:Shiro简介
前言 现在在学习Shiro,参照着张开涛老师的博客进行学习,然后自己写博客记录一下学习中的知识点,一来可以加深理解,二来以后遗忘了可以查阅.没有学习过Shiro的小伙伴,也可以和我一起学习,大家共同进 ...
- 路飞学城-Python爬虫集训-第一章
自学Python的时候看了不少老男孩的视频,一直欠老男孩一个会员,现在99元爬虫集训果断参与. 非常喜欢Alex和武Sir的课,技术能力超强,当然讲着讲着就开起车来也说明他俩开车的技术也超级强! 以上 ...
- 第一章 impala的安装
目录 第一章 impala的安装 1.impala的介绍 imala基本介绍 impala与hive的关系 impala的优点 impala的缺点: impala的架构以及查询计划 2.impala的 ...
随机推荐
- WEB前端常见受攻击方式及解决办法
一个网站建立以后,如果不注意安全方面的问题,很容易被人攻击,下面就讨论一下几种漏洞情况和防止攻击的办法. 一.SQL注入 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的 ...
- 谁能告诉我如何通过Jenkins完成分布式环境搭建并执行自动化脚本
今天我们接着昨天的内容,看一看如何完成Jenkins分布式环境的搭建和使用,因为我之前也是自己一个人摸索的,如果有不对的地方,请各位看官私信指出. 新增分布式部署节点 在系统管理/节点管理中点击新建 ...
- Bug--slfj4依赖冲突
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/F:/Spring%20p ...
- Redis服务之常用配置(一)
上一篇博客聊了下redis的简介以及redis的yum安装和源码编译安装需要注意到问题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13378138.html ...
- Python time asctime()方法
描述 Python time asctime() 函数接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07 ...
- Java注解与反射
概要 本文主要是总结Java注解与反射的相关知识,加深自己对Java类动态语言的理解,同时为日后学习Spring打下基础. 注解: 什么是注解 Annotation的作用 不是程序本身,但是可以对程序 ...
- 牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
LINK:卷积 思考的时候 非常的片面 导致这道题没有推出来. 虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG. 容易推出 \(G(x)=\frac{F(x)}{1- ...
- luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开
LINK:多项式 exp 做多项式的题 简直在嗑药. 前置只是 泰勒展开 这个东西用于 对于一个函数f(x) 我们不好得到 其在x处的取值. 所以另外设一个函数g(x) 来在x点处无限逼近f(x). ...
- bzoj 题目选做
这里将记录着我在接下来的日子里在bzoj上遇到的各种 毒瘤题目 1.轮状病毒 题目是很没意思的 列出状态 显然无法递推 我简单推了一下加动态加点的状态 嗯发现规律没有那么简单 打表 也不太能发现吧 正 ...
- 【问题记录】springMVC @Valid使用不生效问题
问题描述 在网上找到如何使用@Valid注解后,就把用到的配置和jar包加上,然后测试发现一直不生效.下面是配置及解决方法 配置 1.引入依赖 2.添加相应的配置(springmvc配置文件) < ...