数据处理--python
目录
Pandas
series
DataFrame
2.1手动创建dataframe
2.2 read_csv方法
2.3 read_excel()
2.4 query()
2.5聚合函数、group by&having
2.6 sort_values()函数
2.7 drop()
2.8 describe()
Pandas
数据类型:Series和DataFrame
series
series由values和index组成
生成Series:
>>> s = pd.Series(data, index=index)
eg:
代码
import pandas as pd
eva = {'凌波丽': 0, '碇真嗣': 1}
eva_s = pd.Series(eva)
eva_s
结果:
凌波丽 0
碇真嗣 1
dtype: int64
Series取值,切片:
代码:
import pandas as pd
t1 = pd.Series([13, 23, 33, 43, 53], index=["a", "b", "c", "d", "e"])
print(t1)
'''
a 13
b 23
c 33
d 43
e 53
dtype: int64
'''
# 通过索引直接取值
print(t1["d"]) # 43
# 通过位置取值(从0开始)
print(t1[3]) # 43
# 切片
# 取位置连续的值
print(t1[1:4]) # 也可以指定步长
'''
b 23
c 33
d 43
dtype: int64
'''
# 取位置不连续的值
print(t1[[1,3]])
'''
b 23
d 43
dtype: int64
'''
# 也可以通过索引取多个值
print(t1[["b","d","w"]]) # 如果指定的索引不存在,那么对应值就返回NaN(float类型)
'''
b 23.0
d 43.0
w NaN
dtype: float64
'''
DataFrame
2.1手动创建dataframe
Eg.
代码1:
df = pd.DataFrame([[1, 2, 3]], columns=list("ABC"))
结果:
A B C
0 1 2 3
代码2:
import pandas as pd
df= pd.DataFrame({'a': range(10, 20), 'b': range(20, 30)})
print(df)
结果:
a b
0 10 20
1 11 21
2 12 22
3 13 23
4 14 24
5 15 25
6 16 26
7 17 27
8 18 28
9 19 29
获取columns的方法:
1.
代码
col = df.columns # 获取到的col是<class 'pandas.core.indexes.base.Index'>
结果
Index(['A', 'B', 'C'], dtype='object')
2
代码
col = df.columns.values # 返回结果是数组
结果
['A' 'B' 'C']
3.
代码
print(list(df))
结果
['A' 'B' 'C']
2.2 read_csv方法
简介:
pandas.csv() 函数将逗号分离的值 (csv) 文件读入数据框架。还支持可选地将文件读入块或将其分解。
基本参数:
1.filepath_or_buffer:数据输入的路径:可以是文件路径、可以是URL,也可以是实现read方法的任意对象。这个参数,就是我们输入的第一个参数。
代码:
import pandas as pd
pd.read_csv("girl.csv")
# 还可以是一个URL,如果访问该URL会返回一个文件的话,那么pandas的read_csv函数会自动将
该文件进行读取。比如:我们用fastapi写一个服务,将刚才的文件返回。
pd.read_csv("http://localhost/girl.csv")
# 里面还可以是一个 _io.TextIOWrapper,比如:
f = open("girl.csv", encoding="utf-8")
pd.read_csv(f)
2.sep:读取csv文件时指定的分隔符,默认为逗号。注意:"csv文件的分隔符" 和 "我们读取csv文件时指定的分隔符" 一定要一致。
3.delim_whitespace :默认为 False,设置为 True 时,表示分割符为空白字符,可以是空格、"\t"等等。不管分隔符是什么,只要是空白字符,那么可以通过delim_whitespace=True进行读取。
4.name和header
应用场景:
1. csv文件有表头并且是第一行,那么names和header都无需指定;
2. csv文件有表头、但表头不是第一行,可能从下面几行开始才是真正的表头和数据,这个时候指定header即可;
3. csv文件没有表头,全部是纯数据,那么我们可以通过names手动生成表头;
4. csv文件有表头、但是这个表头你不想用,这个时候同时指定names和header。先用header选出表头和数据,然后再用names将表头替换掉,就等价于将数据读取进来之后再对列名进行rename;
5 .index_col:我们在读取文件之后所得到的DataFrame的索引默认是0、1、2……,我们可以通过set_index设定索引,但是也可以在读取的时候就指定某列为索引。
6. usecols:如果一个数据集中有很多列,但是我们在读取的时候只想要使用到的列,我们就可以使用这个参数。
Eg
pd.read_csv('girl.csv', delim_whitespace=True, usecols=["name", "address"])
7.dtype:在读取数据的时候,设定字段的类型。比如,公司员工的id一般是:00001234,如果默认读取的时候,会显示为1234,所以这个时候要把他转为字符串类型,才能正常显示为00001234
代码:
df = pd.read_csv('girl.csv', delim_whitespace=True, dtype={"id": str})
8.converters:在读取数据的时候对列数据进行变换,例如将id增加10,但是注意 int(x),在使用converters参数时,解析器默认所有列的类型为 str,所以需要进行类型转换。
代码:
pd.read_csv('girl.csv', sep="\t", converters={"id": lambda x: int(x) + 10})
9.skiprows:表示过滤行,想过滤掉哪些行,就写在一个列表里面传递给skiprows即可。注意的是:这里是先过滤,然后再确定表头,比如:
pd.read_csv('girl.csv', sep="\t", skiprows=[0])
这里把第一行过滤掉了,因为第一行是表头,所以在过滤掉之后第二行就变成表头了。
pd.read_csv('girl.csv', sep="\t", skiprows=lambda x: x > 0 and x % 2 == 0)
由于索引从0开始,所以凡是索引大于0、并且%2等于0的记录都过滤掉。索引大于0,是为了保证表头不被过滤掉
2.3 read_excel()
基本用法(io)
直接使用pd.read_excel(r"文件路径"),默认读取第一个sheet的全部数据
默认读取第一个sheet的全部数据
3.sheet_name(str, int, list, None, default 0)
str字符串用于引用的sheet的名称,int整数用于引用的sheet的索引(从0开始),字符串或整数组成的列表用于引用特定的sheet,None 表示引用所有sheet
4.names(array-like, default None)
表示自定义表头的名称,需要传递数组参数。
.index_col(int, list of int, default None)
指定列为索引列,默认为None,也就是索引为0的列用作DataFrame的行标签。int整数:指定第几列第几行为所引列。List of int:选择列表中整数列为索引列。
6.skiprows(list like)
跳过指定的行
Skiprows = n跳过前n行
skiprows=lambda x: x % 2 == 0 跳过偶数行
2.4 query()
简介
pandas的query()方法是基于DataFrame列的计算代数式,对于按照某列的规则进行过滤的操作,可以使用query方法。
一般用法
df.query('expression')
源数据
筛选通过等于某个值来筛选行
代码1:
df.query('brand == "行的名字"')
代码2:
df[df['brand']=="Python数据之道"]
通过数学表达式筛选
除了直接通过等于某个值来筛选, query 函数还支持通过数学表达式来进行数据筛选,包括 >、 <、 +、 -、 *、 / 等。
当需要在某列中筛选多个符合要求的值的时候,可以通过列表(list)来实现,示例如下
# 需要注意下 双引号 和 单引号的分开使用
在程序比较长的时候,经常会使用变量来作为筛选条件, query 函数在使用变量作为判断标准时,通过在变量前面添加 @ 符号来实现,示例如下
代码
name = 'Python数据之道'
df.query('brand == @name')
列表数据筛选
值前瞻"]')
有很多情况下,咱们需要通过多个条件来筛选数据,query 函数支持多种条件的组合,
两者都需要满足的并列条件使用符号 &,或 单词 and
只需要满足其中之一的条件使用符号 |,或 单词 or
列名称有空格的情况
当 dataframe 的列名称中有空格或其他特殊符号的时候,需要使用 反引号(backtick mark),即键盘ESC键下面的按键(就是键盘上第二排第一个按键,有‘~’这个符号的按键) 来将列名包裹起来,示例如下:
df.query("`till years` < 5")
2.5聚合函数、group by&having
用法
df.groupby('column').agg(列名 = ('values','sum'))
df.groupby(['column1','column2']).agg(列名 = ('values','sum'))
参数说明
groupby('column'):指定我们的分组字段
agg():聚合函数
列名:我们对聚合字段名别名
'value':数值型字段的名字
'sum':聚合函数的名字,也可以是max、min等
Eg
cpc.groupby('平台门店名称').agg(总合 = ('门店实收','sum')).query('总合>10000').sort_values(by = '总合',ascending=False)
2.6 sort_values()函数
参数 说明
by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
ascending 是否按指定列的数组升序排列,默认为True,即升序排列
inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position {‘first’,‘last’},设定缺失值的显示位置
2.7 drop()
删除行和列
一般式:drop([ ],axis=0,inplace=True)
- drop([]),默认情况下删除某一行;
- 如果要删除某列,需要axis=1;
- 参数inplace 默认情况下为False,表示保持原来的数据不变,True 则表示在原来的数据上改变
2.8 describe()
#得到对表格内的数值型字段进行描述性统计
#count--计数
#mean--平均值
#std--标准差
#min--最小值
#25%/50%/75%--分位值
#max--最大值
数据处理--python相关推荐
- 海量数据处理-Python
文章目录 海量数据处理-Python 海量数据处理的困难 大文件生成 空间受限 分块读取 文件拆分提取 拆分小文件 比较小文件 通过hash拆分文件 拆分小文件-依据hash 求取IP前TopK(还是 ...
- python数据处理_时间序列数据处理python 库
[注]本人原创,最初发表于CSDN,后发布于知乎.为避免误会为抄袭,特此说明 由于我热衷于机器学习在时间序列中的应用,特别是在医学检测和分类中,在尝试的过程中,一直在寻找优质的Python库(而不是从 ...
- python urllib.request 爬虫 数据处理-python 爬虫之 urllib库
文章更新于:2020-03-02 注:代码来自老师授课用样例. 一.初识 urllib 库 在 python2.x 版本,urllib 与urllib2 是两个库,在 python3.x 版本,二者合 ...
- python urllib.request 爬虫 数据处理-python之爬虫(三) Urllib库的基本使用
什么是Urllib Urllib是python内置的HTTP请求库 包括以下模块 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模 ...
- python urllib.request 爬虫 数据处理-python爬虫1--urllib请求库之request模块
urllib为python内置的HTTP请求库,包含四个模块: request:最基本的HTTP请求模块, 只需要传入URL和参数 error:异常处理模块 parse:工具模块,处理URL,拆分.解 ...
- python urllib.request 爬虫 数据处理-Python爬虫学习之(二)| urllib进阶篇
作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 前情回顾,urllib的基本用法 urllib库的基本组成 利用最简单的urlopen方法爬取网页html 利用Re ...
- python urllib.request 爬虫 数据处理-Python网络爬虫(基于urllib库的get请求页面)
一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...
- 数据处理python
1.用python读取txt文件:按行读取 f = open("result_final_1.txt","r") #设置文件对象 line = f.readli ...
- 通量数据处理(Python)——NC格式转为CSV格式
1.数据结构 NetCDF(network Common Data Form)网络通用数据格式包括变量.维和属性.通量数据RDMF_2011_L3.nc可利用软件Panoply进行可视化,如下图所 ...
- 从零开始,构建电子地图网站:0_3_数据处理python(1)
一.环境搭建 Python往postgresql中导数据,至少需要3个库包,gdal.shaply.psycopg2. 先一个一个来. 1.安装gdal 直接安会有问题,先去下个安装程序,https: ...
最新文章
- oracle oats 安装,Mentor完整培训教程.pdf
- 精通jQuery选择器使用 转一篇
- 基于Wide Deep Learning的推荐系统
- 常见八种安卓开发报错的方式
- Cheat_Sheet ---Keras、Matlab、Matplotlib、Numpy、Pandas、Scikit-Learn、SciPy
- html的<input type='radio'/>change事件坑
- 字符内存转成字符串_字符串内存内部
- ResourceBundle国际化
- linux需要的GLIBCXX版本,Linux下GLIBCXX和GLIBC版本低造成的编译错误的解决方案
- 自我介绍html模板王,出色的自我介绍模板5篇
- 【大数据分析】Spark SQL查询:使用SQL命令
- 超频电脑黑屏(超频失败怎么办)
- 计算机光盘无法格式化,求助,我的电脑无法格式化DVD光盘,提示为“windows无法完成格式化“。求高手。...
- tidb损坏tikv节点怎么恢复集群
- PTA团体天体赛-----机工士姆斯塔迪奥
- P2E引发热潮,从代币经济学、元宇宙和风投等角度看链游行业将走向何方?
- Delphi实现win10视频壁纸
- 敏捷开发“松结对编程”系列之十二:L型代码结构(质量篇之一)
- java web 打印 Cl0dup
- linux一键分区脚本,【Shell】Linux中分区脚本