数据处理--python

简介: 数据处理--python

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--最大值

目录
相关文章
|
2月前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
80 0
|
2月前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
2月前
|
数据处理 开发者 Python
Python中的列表推导式:简洁高效的数据处理
在编程世界中,效率和可读性是代码的两大支柱。Python语言以其独特的简洁性和强大的表达力,为开发者提供了众多优雅的解决方案,其中列表推导式便是一个闪耀的例子。本文将深入探讨列表推导式的使用场景、语法结构及其背后的执行逻辑,带你领略这一特性的魅力所在。
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
存储 数据处理 Python
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第27天】在科学计算和数据分析领域,Python凭借简洁的语法和强大的库支持广受欢迎。NumPy和SciPy作为Python科学计算的两大基石,提供了高效的数据处理和分析工具。NumPy的核心功能是N维数组对象(ndarray),支持高效的大型数据集操作;SciPy则在此基础上提供了线性代数、信号处理、优化和统计分析等多种科学计算工具。结合使用NumPy和SciPy,可以显著提升数据处理和分析的效率,使Python成为科学计算和数据分析的首选语言。
72 3
|
2月前
|
存储 数据挖掘 数据处理
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第26天】Python 是数据分析领域的热门语言,Pandas 库以其高效的数据处理功能成为数据科学家的利器。本文介绍 Pandas 在数据读取、筛选、分组、转换和合并等方面的高效技巧,并通过示例代码展示其实际应用。
53 2
|
2月前
|
存储 机器学习/深度学习 算法
Python科学计算:NumPy与SciPy的高效数据处理与分析
【10月更文挑战第26天】NumPy和SciPy是Python科学计算领域的两大核心库。NumPy提供高效的多维数组对象和丰富的数学函数,而SciPy则在此基础上提供了更多高级的科学计算功能,如数值积分、优化和统计等。两者结合使Python在科学计算中具有极高的效率和广泛的应用。
79 2
|
2月前
|
机器学习/深度学习 数据可视化 数据处理
掌握Python数据科学基础——从数据处理到机器学习
掌握Python数据科学基础——从数据处理到机器学习
46 0
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
Python在数据科学中的应用:从数据处理到模型训练
Python在数据科学中的应用:从数据处理到模型训练
|
2月前
|
分布式计算 并行计算 大数据
Python编程中的高效数据处理技巧
Python编程中的高效数据处理技巧
58 0