如何使用python转换数据?

案例分析:

2019年8月27日,中国大陆第一家COSTCO在上海开业,由于人满为患,costcoa实行限制人流,将人数控制在

2000以内。Costco把零售效率做到极致,是零售企业学习标杆。作为数据分析师,也要学习Costco为用户创造价值的精神。

下面以网上读取一些Costco股价数据,学习用python对这些数据进行转换,为将来数据分析做准备。

 

##首先从网页读取Costco历史股价数据

代码如下:

import numpy as np
import pandas as pd
import ssl
pd.set_option('max_rows',10) #设置最多显示10行
pd.set_option('display.float_format',lambda x:'%.2f' % x)#禁用科学计数法
ssl._create_default_https_context = ssl._create_unverified_context #防止SSL报错
url = 'https://finance.yahoo.com/quote/COST/history?p=COST' #网址
dfs = pd.read_html(url) #读取网页数据
df = dfs[0] #获取网页中第一个表格
df

结果如下:

python 将数据转成json格式 python转换数据_强制转换

 

 

 

 ##然后对数据进行清洗

代码如下:

# 清洗过滤无效数据

df = df[~(df.Date.str.contains('Close')| df.Open.str.contains('Dividend'))]
df

结果如下:

python 将数据转成json格式 python转换数据_数据_02

 

接下来,就依据读取的网页数据,对其进行数据转换。

数据转换分为以下几种:

###

1、转换时间

2、转换为数值

3、转换为字符

4、转换为区间

5、分组转换

6、标准化转换

###

1、如何转换时间

##使用 transform()函数,结合dateutil模块中的parse()函数,将字符串转换为时间。

代码如下:

from dateutil.parser import parse
dfc = df.copy() #拷贝一个副本做临时操作
dfc['时间'] = df.Date.transform(parse).copy()

dfc

显示如下:

python 将数据转成json格式 python转换数据_强制转换_03

 

 

### 使用pd.to_datetime()函数转换

代码如下:

pd.to_datetime(df.Date)

结果如下:

python 将数据转成json格式 python转换数据_数据_04

 

2、如何转换为数值

### 使用pd.to_numeric()函数,结合apply()函数,实现将每一列都强制转换为数值,

无法转换的元素用nan表示。

代码如下:

df.apply(pd.to_numeric,errors = 'coerce') #强制转换为数值

结果如下:

python 将数据转成json格式 python转换数据_强制转换_05

其中errors='coerce'是pd.to_numeric()函数的一个参数,如果

把coerce转换为ignore,那么将忽略无法转换的元素,让其保持原样。

python 将数据转成json格式 python转换数据_python 将数据转成json格式_06

 

3、如何转换为字符

###使用astype()函数,可以实现数据类型的相互转换。

下面代码实现把数据框全部转换为字符型

df.astype(str).dtypes

python 将数据转成json格式 python转换数据_python 将数据转成json格式_07

  

#对于时间型的数据,使用strftime()函数,转换为指定的字符格式

# 将时间转换为月份

dfc['月份'] = dfc.时间.dt.strftime('%Y年%m月')
dfc

python 将数据转成json格式 python转换数据_强制转换_08

 

 

 4、如何转换为区间?

#使用pd.cut()函数,可以将数值切割为指定的区间。

 

 5、如何做分组转换?

##使用groupby()和transform()函数,在行数保持不变的情况下,对某列进行分组求和。

例如:

#分组求和---相同月份分组后求和

dfc.groupby('月份')['Volume'].transform(sum)

python 将数据转成json格式 python转换数据_数据_09

 

 

 #计算每个数据对应各自分组的占比

dfc.Volume / dfc.groupby('月份')['Volume'].transform(sum) *100

python 将数据转成json格式 python转换数据_数据转换_10

 

 使用apply()函数,返回如下:

python 将数据转成json格式 python转换数据_python 将数据转成json格式_11

 

 使用agg()函数,可以同时应用多个函数

python 将数据转成json格式 python转换数据_数据转换_12

 

 

python 将数据转成json格式 python转换数据_强制转换_13

 

 

python 将数据转成json格式 python转换数据_python 将数据转成json格式_14

 

 

 

6、如何标准化转换?

##0-1标准化

python 将数据转成json格式 python转换数据_数据转换_15

 

 小结:

 

 

 

python 将数据转成json格式 python转换数据_强制转换_16