2018-09-16 20:25:52 weixin_42422585 阅读数 1755
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1933 人正在学习 去看看 覃秉丰

Pandas数据预处理与数据重塑案例

前言

  预处理是数据分析中不可缺少的一部分,我们日常得到的数据多半是规整的,只有得到想要的相应格式的数据,才能进行后续的探索性分析和建模。以下是我在一个小的项目中部分数据预处理的过程,在这里记录下来方便我后续查看,也希望能给刚入门pandas的朋友们提供一些帮助。

  本案例内容主要使用python的pandas进行操作,涉及知识包括数据框的增删查改、批量读取数据、变量类型的转换、数据框的重塑与合并。本案例中并没有介绍pandas函数的具体用法,但给出了完整的预处理过程和注释,不熟悉的同学可以自己尝试一下。

数据介绍和任务要求

  数据包括2004-2016年的流感数据,数据展示如下

逐年流感数据文件夹

这里写图片描述

单年流感数据

这里写图片描述

各年各省市的人口数据展示如下

人口数据

这里写图片描述

任务要求:

  • 读取2004-2016年的流感数据,并拼接为一个数据框
  • 读入人口数据,按年份和地区对流感数据填充人口数

  为想亲自上手操作的朋友们提供了数据的百度云链接,建议先自己尝试后在阅读后续代码。
链接:https://pan.baidu.com/s/1ALHiIk60_g1p9zjSBRvQ9Q 密码:cqsk

加载相关包

import pandas as pd
import numpy as np
import os
import re

流感数据的读取与清洗

读取第一年流感数据

  首先读取第一年的数据,并展示查看数据查看其格式

os.chdir('C:/Users/CCC/Desktop/')                        # 设置工作路径为C盘桌面
dat0 = pd.read_csv("by_year/2004.csv", encoding = "gbk") # 读取数据,命名为dat0
dat0.head()                                              # 展示数据前5行
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5
0 NaN NaN 流行性感冒 NaN NaN NaN
1 NaN 地区 发病数 死亡数 发病率 死亡率
2 NaN 全国 49496 15 3.8077 0.0012
3 NaN 北京市 8 0 0.0540 NaN
4 NaN 天津市 13 0 0.1399 NaN
dat0.tail() # 展示数据后5行
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5
30 NaN 甘肃省 978 0 3.7416 NaN
31 NaN 青海省 230 1 4.2627 0.0185
32 NaN 宁夏 193 0 3.3051 NaN
33 NaN 新疆 95 0 0.5106 NaN
34 2018年9月10日 下午9:09 NaN NaN NaN NaN NaN

  从这里我们可以看出数据框的列名与实际需要的列名不符,并且数据框头尾均有不需要的空行。

对第一年的数据进行预处理

  针对上一步中所看出的现象对第1年的数据进行预处理,主要的步骤是重塑列名以及删除多余的列。

dat0.drop("Unnamed: 0", axis =1, inplace= True)        # 删除第一列
col_name = dat0.iloc[1]                                # 选取真实列名所在的第1行
dat0.columns = col_name                                # 更改列名 
dat0.drop([0, 1, len(dat0)-1], axis =0, inplace= True) # 删除多余的行
dat0.head()                                            # 展示数据的前5行
1 地区 发病数 死亡数 发病率 死亡率
2 全国 49496 15 3.8077 0.0012
3 北京市 8 0 0.0540 NaN
4 天津市 13 0 0.1399 NaN
5 河北省 1923 0 2.8283 NaN
6 山西省 57 0 0.1720 NaN

  查看展示出的数据,可以发现据的index被删除行的时候弄乱了,于是在这一部分我们对index进行重置,并对数据新增加年份变量。

dat0.reset_index(inplace = True, drop=True) # 重新设置被打乱的index 
dat0["年份"] = 2004                         # 添加年份变量
dat0.head()                                 # 展示数据
1 地区 发病数 死亡数 发病率 死亡率 年份
0 全国 49496 15 3.8077 0.0012 2004
1 北京市 8 0 0.0540 NaN 2004
2 天津市 13 0 0.1399 NaN 2004
3 河北省 1923 0 2.8283 NaN 2004
4 山西省 57 0 0.1720 NaN 2004

批量读取连接数据

  针对对第一年数据的预处理,我们可以知道对后续的数据的预处理操作,于是在这里自定义函数用于对后几年的数据进行预处理和重塑变量。

# 自定义函数Preprogress对后几年数据需要进行的预处理
# 传入参数为df:数据框;year:年份数
# 返回处理过的数据框
def Preprogress(df, year):
    df.drop("Unnamed: 0", axis =1, inplace= True)       # 删除第0列
    df.drop([0, 1 , len(df)-1], axis =0, inplace= True) # 删除头两行和后一行
    df["年份"] = year                                   # 重塑年份变量
    return(df)                                          # 返回值
  在进行批量读取数据之前我们先获取需要读取的文件名,通过`os.listdir`得到数据的文件名列表,并删除之前已经读取过的2004年的数据。
file_name = os.listdir('by_year') # 获得by_year文件夹内的文件名[list形式]
file_name.remove("2004.csv")      # 剔除已经读入的2004年的数据
file_name                         # 查看列表
[‘2005.csv’, ‘2006.csv’, ‘2007.csv’, ‘2008.csv’, ‘2009.csv’, ‘2010.csv’, ‘2011.csv’, ‘2012.csv’, ‘2013.csv’, ‘2014.csv’, ‘2015.csv’, ‘2016.csv’]   定义函数用于批量读取及拼接数据,并在读取过程中使用上述Preprogress的函数进行预处理。
## 自义函数ReadYear用于批量读取拼接数据
## 传入参数file_name:文件名列表;the_path:路径
## 返回值other_data:拼接过的数据
def ReadYear(file_name, the_path):
    list = []                                                        # 建立空列表用于存放数据
    for i in range(len(file_name)):                                  # 通过循环遍历读取文件                 
        df = pd.read_csv(the_path + file_name[i] , encoding = "gbk") # 读取数据
        year = 2004+i+1                                              # 依次累加年份
        Preprogress(df, year)                                        # 进行预处理及其重塑变量
        list.append(df)                                              # 将处理过后的数据框添加到list中
        other_data = pd.concat(list)                                 # 使用concat合并list内的数据
    return(other_data)                                               # 返回值

other_data = ReadYear(file_name, "by_year/")                         # 批量读取数据,命名为other_data
other_data.head()                                                    # 展示拼接后的数据
Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 年份
2 全 国 45672 5 3.5136 0.0004 2005
3 北京市 120 0 0.7811 NaN 2005
4 天津市 377 1 3.6197 0.0096 2005
5 河北省 3916 0 5.7508 NaN 2005
6 山西省 79 0 0.2369 NaN 2005

  拼接后的数据如上所示,而这份数据还需要与之前读取的2004年的数据所连接,一般情况下需要通过列名进行拼接,因此我们需要重塑other_data的列名,使其dat一致。

other_data.columns = col_name.append(pd.Series("年份")) # 重塑数据的列名
other_data.head()                                       # 展示数据的前5行
地区 发病数 死亡数 发病率 死亡率 年份
2 全 国 45672 5 3.5136 0.0004 2005
3 北京市 120 0 0.7811 NaN 2005
4 天津市 377 1 3.6197 0.0096 2005
5 河北省 3916 0 5.7508 NaN 2005
6 山西省 79 0 0.2369 NaN 2005

  接下来就可以直接通过concat那两份数据连接起来,这里需要注意的是连接的数据需要放在一个list内。而且我们可以发现数据中存在部分的缺失值,在这里我们使用0对缺失值进行填补。

flu_data = pd.concat([dat0, other_data]) # 连接数据,命名为flu_data
flu_data.fillna(0, inplace = True)       # 使用0填充缺失值
flu_data.head()                          # 展示数据前5行
1 地区 发病数 死亡数 发病率 死亡率 年份
0 全国 49496 15 3.8077 0.0012 2004
1 北京市 8 0 0.0540 0 2004
2 天津市 13 0 0.1399 0 2004
3 河北省 1923 0 2.8283 0 2004
4 山西省 57 0 0.1720 0 2004
## 检查数据   到这一步的时候,我们的第一个流感数据就算是大概出来了,但是该数据也不太规整,所以我们先对地区这一列进行一个计数,用于检查。
flu_data["地区"].value_counts() # 对数据进行计数
甘肃省       13
云南省       13
辽宁省       13
山东省       13
四川省       13
浙江省       13
山西省       13
内蒙古       13
天津市       13
河南省       13
湖南省       13
贵州省       13
上海市       13
重庆市       13
江苏省       13
海南省       13
福建省       13
安徽省       13
青海省       13
陕西省       13
江西省       13
北京市       13
吉林省       13
河北省       13
广东省       13
湖北省       13
广    西    12
建设兵团      12
全    国    12
西    藏    12
宁    夏    12
黑龙江省      11
新疆        11
黑龙江        2
新    疆     2
西藏         1
全国         1
宁夏         1
广西         1
Name: 地区, dtype: int64

  通过输出现象可以看出数据缺失存在一些问题,如部分数据中存在空格;黑龙江有“黑龙江”和“黑龙江省”两种表现形式;在人口数据中没有建设兵团这一类型,需要删除这一类型所在的行。针对这些问题我们还需要进行预处理。

flu_data["地区"] = flu_data["地区"].apply(lambda x: x.replace(" ", "")) # 替换文字中的空格
flu_data = flu_data.loc[flu_data["地区"] != "建设兵团"]                 # 删除地区为建设
flu_data.loc[flu_data['地区'] =='黑龙江','地区']='黑龙江省'             # 将黑龙江替换为黑龙江省

flu_data["地区"].value_counts()                                         # 再次检查地区列
甘肃省     13
江苏省     13
山东省     13
四川省     13
新疆      13
西藏      13
浙江省     13
山西省     13
黑龙江省    13
内蒙古     13
天津市     13
河南省     13
湖南省     13
贵州省     13
上海市     13
重庆市     13
福建省     13
海南省     13
云南省     13
青海省     13
陕西省     13
北京市     13
宁夏      13
吉林省     13
河北省     13
湖北省     13
安徽省     13
广东省     13
全国      13
广西      13
江西省     13
辽宁省     13
Name: 地区, dtype: int64

  可见进行处理的地区变量的每一项均为13个,对应读入的13年的数据,说明数据处理规范。之后开始对人口数据进入读取和处理。

## 人口数据的清洗与重塑 读取人口数据,并展示查看它的前后5行。
people = pd.read_csv("people_2.csv",encoding="gbk") # 读取人口数据,命名为people
people.head()                                       # 展示数据的前5行
数据库:分省年度数据 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6 Unnamed: 7 Unnamed: 8 Unnamed: 9 Unnamed: 11 Unnamed: 12 Unnamed: 13 Unnamed: 14 Unnamed: 15 Unnamed: 16 Unnamed: 17 Unnamed: 18 Unnamed: 19 Unnamed: 20
0 指标:年末常住人口(万人) NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1 时间:最近20年 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
2 地区 2016年 2015年 2014年 2013年 2012年 2011年 2010年 2009年 2008年 2006年 2005年 2004年 2003年 2002年 2001年 2000年 1999年 1998年 1997年
3 北京市 2173 2171 2152 2115 2069 2019 1962 1860 1771 1601 1538 1493 1456 1423 1385 1364 NaN NaN NaN
4 天津市 1562 1547 1517 1472 1413 1355 1299 1228 1176 1075 1043 1024 1011 1007 1004 1001 NaN NaN NaN

5 rows × 21 columns

people.tail() # 展示数据的后5行
数据库:分省年度数据 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6 Unnamed: 7 Unnamed: 8 Unnamed: 9 Unnamed: 11 Unnamed: 12 Unnamed: 13 Unnamed: 14 Unnamed: 15 Unnamed: 16 Unnamed: 17 Unnamed: 18 Unnamed: 19 Unnamed: 20
31 青海省 593 588 583 578 573 568 563 557 554 548 543 539 534 529 523 517 NaN NaN NaN
32 宁夏回族自治区 675 668 662 654 647 639 633 625 618 604 596 588 580 572 563 554 NaN NaN NaN
33 新疆维吾尔自治区 2398 2360 2298 2264 2233 2209 2185 2159 2131 2050 2010 1963 1934 1905 1876 1849 NaN NaN NaN
34 注:2000、2001年人口为当年人口普查推算数,其余年份人口为年度人口抽样调查推算数据,2… NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
35 数据来源:国家统计局 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 21 columns

  通过观察数据,我们可以发现数据的列名位于第2行,前3行和后两行均是需要剔除的多余数据,通过先前使用过的方法对数据进行处理。

people.columns = people.iloc[2]                                            # 用第2行作为列名
people.drop([0,1,2,len(people)-1,len(people)-2], axis = 0, inplace = True) # 删除多余的行
people.reset_index(inplace=True, drop=True)                                # 删除多余的行
people.head()                                                              # 展示数据的前5行
2 地区 2016年 2015年 2014年 2013年 2012年 2011年 2010年 2009年 2008年 2006年 2005年 2004年 2003年 2002年 2001年 2000年 1999年 1998年 1997年
0 北京市 2173 2171 2152 2115 2069 2019 1962 1860 1771 1601 1538 1493 1456 1423 1385 1364 NaN NaN NaN
1 天津市 1562 1547 1517 1472 1413 1355 1299 1228 1176 1075 1043 1024 1011 1007 1004 1001 NaN NaN NaN
2 河北省 7470 7425 7384 7333 7288 7241 7194 7034 6989 6898 6851 6809 6769 6735 6699 6674 NaN NaN NaN
3 山西省 3682 3664 3648 3630 3611 3593 3574 3427 3411 3375 3355 3335 3314 3294 3272 3247 NaN NaN NaN
4 内蒙古自治区 2520 2511 2505 2498 2490 2482 2472 2458 2444 2415 2403 2393 2386 2384 2381 2372 NaN NaN NaN

5 rows × 21 columns

  通过观察数据,我们可以发现人口数据的部分地区名与流感数据的地区名不一致,比如对于内蒙古,流感数据中的表现形式为“内蒙古”,而人口数据中的表现形式为“内蒙古自治区”。而后续对流感数据填充人口数时需要同时通过地区和年份两值进行填充,因此需要对统一二者地区名的格式,在这里选择统一对人口数据去掉“自治区”三个字进行处理。

## 统一地区名的格式
people.loc[people['地区'] == '内蒙古自治区','地区']='内蒙古'
people.loc[people['地区'] == '广西壮族自治区','地区']='广西'
people.loc[people['地区'] == '西藏自治区','地区']='西藏'
people.loc[people['地区'] == '宁夏回族自治区','地区']='宁夏'
people.loc[people['地区'] == '新疆维吾尔自治区','地区']='新疆'
people["地区"].value_counts() # 通过计数检查地区名
甘肃省 1 重庆市 1 山东省 1 四川省 1 新疆 1 西藏 1 吉林省 1 海南省 1 山西省 1 内蒙古 1 天津市 1 辽宁省 1 河南省 1 江西省 1 上海市 1 福建省 1 江苏省 1 云南省 1 青海省 1 陕西省 1 北京市 1 宁夏 1 湖北省 1 河北省 1 安徽省 1 黑龙江省 1 广东省 1 浙江省 1 广西 1 贵州省 1 湖南省 1 Name: 地区, dtype: int64   规范了地区名之后,为了方便数据的填充,我们需要对人口数据数据进行重塑,以地区、年份、总人口数三个变量的形式进行表示,使宽数据变为长数据。下列展示了数据重塑及其预处理的过程。
peo_name = list(people.columns)                                                        # 获取people的变量名
peo_name.remove("地区")                                                                # 去除地区变量,得到年份数据
change_people = pd.melt(people, id_vars=["地区"], value_vars=peo_name, \
                        var_name="年份", value_name="总人口数")                        # 通过melt重塑数据
change_people["年份"] = change_people["年份"].apply(lambda x: re.findall("\d+", x)[0]) # 去除年份的“年”字
change_people["年份"] = change_people["年份"].astype(np.int)                           # 将年份转换为数值形式
change_people.head()                                                                   # 展示数据前5行
地区 年份 总人口数
0 北京市 2016 2173
1 天津市 2016 1562
2 河北省 2016 7470
3 山西省 2016 3682
4 内蒙古 2016 2520
## 拼接数据   结束了对流感数据及人口数据的读取和处理,接下来我们需要对两个数据进行拼接,使用merge函数,按年份和地区对值进填充。
result = pd.merge(flu_data, change_people, on=['年份', '地区'])
result.dtypes
地区 object 发病数 object 死亡数 object 发病率 object 死亡率 object 年份 int64 总人口数 object dtype: object
change_list = ['发病率','死亡率','总人口数','发病数','死亡数']
result[change_list] = result[change_list].apply(pd.to_numeric)
result.head()
地区 发病数 死亡数 发病率 死亡率 年份 总人口数
0 北京市 8 0 0.0540 0.0 2004 1493
1 天津市 13 0 0.1399 0.0 2004 1024
2 河北省 1923 0 2.8283 0.0 2004 6809
3 山西省 57 0 0.1720 0.0 2004 3335
4 内蒙古 106 0 0.4446 0.0 2004 2393

  通过以上的操作,成功进行了对数据的处理已经拼接。有任何问题欢迎给我反馈。
Escher
2018/9/16

2019-02-22 14:57:13 gosline 阅读数 280
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1933 人正在学习 去看看 覃秉丰

1. iterator=True(配合get_chunk方法一块使用)

import pandas as pd

df = pd.read_csv("D:\data.csv", encoding="utf-8", error_bad_lines=False, iterator=True)  
 # iterator=True参数配合get_chunk()批量读取数据
print(type(df))  #  此时df对象的类型TextFileReader
 
chunk = df.get_chunk(10)  #获取前10条数据 
chunk = df.get_chunk(10)  #获取11-20条数据

注意 : get_chunk()方法一般查看数据时使用!

所以如果想要读取全部数据并修改的话,我们可以这样增加chunksize属性:

import pandas as pd
df = pd.read_csv("D:\data.csv", encoding="utf-8",
                 error_bad_lines=False, chunksize=5000, iterator=True)
''' chunksize=5000含义为每次往内存中读入5000条数据进行操作,直到读完为止,
    假如data.csv中有100000条数据,那么会读取20次,这样可以大大节约内存,如
    何data.csv中数据太大的话,直接将所有数据读取的话会占用很大的内存 '''
# print(type(df))  #此时df对象的类型 DataFrame
flag = 1
for chunk in df:
''' 此处可以写入对data.csv中数据一行一行执行各种操作的代码
	数据就会从头到尾执行完毕为止
    举例:
    chunk[u'pub_year'] = chunk[u'pub_year'].astype(str) #对data.csv中pub_year字段进行修改
    chunk[u'pub_year'] = chunk[u['pub_year'].apply(lambda x: res(x))] 
    def res(x):
        pass #此处写入对字段的具体内容进行修改的代码
        return x'''
    if flag == 1:
        chunk.to_csv('data_new.csv', mode='a', index=None, header=True)
        ''' 写入一个名为data_new.csv中,注意:data_new.csv第一行应该为字段(属性)
           所以对一行我们需要加上header=True,其他行就不需要了 '''
        flag = 0
    else:
        chunk.to_csv('data_new.csv', mode='a', index=None, header=None)
2018-03-27 10:35:13 Crazy__Hope 阅读数 691
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1933 人正在学习 去看看 覃秉丰

使用pandas处理mongodb数据,转储为csv

import pymongo
import pandas as pd

client = pymongo.MongoClient('192.168.116.215')
cur = client["库名"]["集合"]

data = pd.DataFrame(list(cur.find()))
del data["_id"]
# 存储的时候可以做一些数据清洗的工作,清洗脏数据
data.to_csv("1.csv")
2019-07-29 09:42:13 weixin_42782150 阅读数 54
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1933 人正在学习 去看看 覃秉丰

pandas批量读入Excel、csv类型文件

pandas批量读入Excel文件

Step1:导入模块

import pandas as pd
import os

Step 2:指定存放文件的地址

dir_str=r'D:\000-mine\richang2019\促首充\原始数据集\0613'  #指定存放文件的地址

Step 3:获取指定文件夹下所有Excel文件名称并传送给file_name_list

file_name_list=os.listdir(dir_str)   #返回.xlsx格式所有文件名的列表list

Step 4:for循环获取所有.xlsx格式文件的绝对地址的列表list

file_dir_list=[os.path.join(dir_str,x) for x in file_name_list]
print(file_dir_list)

Step 5:定义DataFrame类型的变量df用来存放获取的所有数据

df = pd.DataFrame()

Step 6:for循环逐个读取每个Excel里面的数据

for i in file_name_list:
        if(i[-4:]=='xlsx'):       #筛选只读取xlsx结尾的文件
        #read_excel方法,参数sheet_name表示读取的工作簿,skiprows表示忽略几行,usecols表示读取指定的列
            EXCEL1 = pd.read_excel(file_dir_list[i],sheet_name ='Sheet1',skiprows=2,usecols=[2,36,37,60])
            #concat方法合并多个文件的数据
            df = pd.concat([df,EXCEL1],ignore_index=True)

Step 7:查看获取的结果

df.tail()

Step 8:批量读取指定的.xlsx文件

方法一:
#读取文件夹中第5、6、7、8个Excel,使用数字切片range(m,n)
for i in range(5,9):    # i为int型变量
	fsf=pd.read_excel(file_dir_list[i],usecols=['主号码','CPS推荐人','订单状态'])
	fs = pd.concat([fs,fsf],ignore_index=True)    
方法二:
#读取文件夹中第最后四个Excel,使用列表切片list[-4:]
for i in file_dir_list[-4:]:   # i为str型变量
	fsf=pd.read_excel(i,usecols=['主号码','CPS推荐人','订单状态'])
	fs = pd.concat([fs,fsf],ignore_index=True)    
2018-10-08 08:37:15 sharkandshark 阅读数 3660
  • Python进阶-Pandas数据分析库

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 Pandas是python中非常常用的数据分析库,在数据分析,机器学习,深度学习等领域经常被使用。本课程会讲解到pandas中最核心的一些知识点,包括Series以及DataFrame的构建,赋值,操作,选择数据,合并等等,以及使用pandas对文件进行读取和写入,使用pandas绘图等等。

    1933 人正在学习 去看看 覃秉丰

PYTHON Pandas批量读取csv文件到DATAFRAME

首先使用glob.glob获得文件路径。然后定义一个列表,读取文件后再使用concat合并读取到的数据。

#读取数据
import pandas as pd
import numpy as np
import glob,os
path=r'e:\tj\month\fx1806'
file=glob.glob(os.path.join(path, "zq*.xls"))
print(file)
dl= []
for f in file:
    dl.append(pd.read_excel(f,header=[0,1],index_col=None))
    
    
df=pd.concat(dl)

 

没有更多推荐了,返回首页