1978-2019.4, 585w中国大陆企业注册信息

文末有 enterprise-registration-data-of-chinese-mainland.csv 数据获取方式。

import pandas as pd

df = pd.read_csv('enterprise-registration-data-of-chinese-mainland.csv', 
                 encoding='utf-8', 
                 #忽略有问题的记录
                 on_bad_lines='skip')

df.head()

Run


#剔除大邓广告
df = df[df['企业类型']!='公众号: 大邓和他的Python']
df.head()

Run


#记录
print('记录数: ', len(df))

#
print('字段有: ', df.columns)

Run

'记录数: 12756270'

'字段有: ['企业名称', '统一社会信用代码', '注册日期', '企业类型', '法人代表', '注册资金', '经营范围', '所在省份',
       '地区', '注册地址']'

但数据可能会有重复,这里以企业名称作为唯一标识,可以查看真实的数据量

print('真实记录数: ', len(set(df['企业名称'])))

Run

'真实记录数: 5888382'


二、如何将多个csv汇总到一个csv中?

那么这个enterprise-registration-data-of-chinese-mainland.csv怎么来的?

原始的数据集结构


先局部实验成功后,推广到整体。

  1. 获取路径列表
  2. 尝试读取任意一个csv文件
  3. 尝试合并两个df
  4. 合并所有csv到一个文件内

2.1 获取路径列表

import os

#大邓电脑为Mac
#Mac容易在文件夹中生成奇怪的.DS_Store
#该操作为获取文件夹列表,同时剔除.DS_Store
y_dirs = [di for di in os.listdir('csv') if '.DS_Store'!=di]
for y_dir in y_dirs:
    #在年份文件夹内有很多csv文件
    fs = ['csv/{}/{}'.format(y_dir, fn) 
          for fn in os.listdir('csv/{}'.format(y_dir))
          if '.csv' in fn]
    print(fs)
    print()

Run

......
......
['csv/2013/河南.csv', 'csv/2013/青海.csv', 'csv/2013/河北.csv', 'csv/2013/浙江.csv', 'csv/2013/内蒙古.csv', 'csv/2013/辽宁.csv', 'csv/2013/天津.csv', 'csv/2013/福建.csv', 'csv/2013/吉林.csv', 'csv/2013/西藏.csv', 'csv/2013/四川.csv', 'csv/2013/云南.csv', 'csv/2013/宁夏.csv', 'csv/2013/新疆.csv', 'csv/2013/安徽.csv', 'csv/2013/重庆.csv', 'csv/2013/贵州.csv', 'csv/2013/湖南.csv', 'csv/2013/海南.csv', 'csv/2013/湖北.csv', 'csv/2013/江西.csv', 'csv/2013/广东.csv', 'csv/2013/北京.csv', 'csv/2013/山西.csv', 'csv/2013/上海.csv', 'csv/2013/陕西.csv', 'csv/2013/黑龙江.csv', 'csv/2013/甘肃.csv', 'csv/2013/江苏.csv', 'csv/2013/山东.csv', 'csv/2013/广西.csv']

['csv/2014/河南.csv', 'csv/2014/青海.csv', 'csv/2014/河北.csv', 'csv/2014/浙江.csv', 'csv/2014/内蒙古.csv', 'csv/2014/辽宁.csv', 'csv/2014/天津.csv', 'csv/2014/福建.csv', 'csv/2014/吉林.csv', 'csv/2014/西藏.csv', 'csv/2014/四川.csv', 'csv/2014/云南.csv', 'csv/2014/宁夏.csv', 'csv/2014/新疆.csv', 'csv/2014/安徽.csv', 'csv/2014/重庆.csv', 'csv/2014/贵州.csv', 'csv/2014/湖南.csv', 'csv/2014/海南.csv', 'csv/2014/湖北.csv', 'csv/2014/江西.csv', 'csv/2014/广东.csv', 'csv/2014/北京.csv', 'csv/2014/山西.csv', 'csv/2014/上海.csv', 'csv/2014/陕西.csv', 'csv/2014/黑龙江.csv', 'csv/2014/甘肃.csv', 'csv/2014/江苏.csv', 'csv/2014/山东.csv', 'csv/2014/广西.csv']

['csv/2015/河南.csv', 'csv/2015/青海.csv', 'csv/2015/河北.csv', 'csv/2015/浙江.csv', 'csv/2015/内蒙古.csv', 'csv/2015/辽宁.csv', 'csv/2015/天津.csv', 'csv/2015/福建.csv', 'csv/2015/吉林.csv', 'csv/2015/西藏.csv', 'csv/2015/四川.csv', 'csv/2015/云南.csv', 'csv/2015/宁夏.csv', 'csv/2015/新疆.csv', 'csv/2015/安徽.csv', 'csv/2015/重庆.csv', 'csv/2015/贵州.csv', 'csv/2015/湖南.csv', 'csv/2015/海南.csv', 'csv/2015/湖北.csv', 'csv/2015/江西.csv', 'csv/2015/广东.csv', 'csv/2015/北京.csv', 'csv/2015/山西.csv', 'csv/2015/上海.csv', 'csv/2015/陕西.csv', 'csv/2015/黑龙江.csv', 'csv/2015/甘肃.csv', 'csv/2015/江苏.csv', 'csv/2015/山东.csv', 'csv/2015/广西.csv']

.....
.....



2.2 尝试读取任意一个csv文件

import pandas as pd

df1 = pd.read_csv('csv/2012/辽宁.csv', 
                  encoding='utf-8', 
                  on_bad_lines='skip')

df1.head(2)

Run


df2 = pd.read_csv('csv/2013/青海.csv', 
                  encoding='utf-8', 
                  on_bad_lines='skip')

df2.head(2)

Run


2.3 尝试合并两个df

两个df垂直方向堆积,不增加字段种类,所以选择 pd.concat函数。

df12 = pd.concat([df1, df2], axis=0)
df12.head(2)

Run


#检查记录数
print(len(df1))
print(len(df2))
print(len(df12))

Run

10246
4417
14663

2.4 合并所有csv到一个文件内

将步骤1、2、3代码整理,汇总

import os
import pandas as pd

#存df列表
dfs = []

#文件路径列表
y_dirs = [di for di in os.listdir('csv') if '.DS_Store'!=di]
for y_dir in y_dirs:
    csvfs = ['csv/{}/{}'.format(y_dir, fn) 
             for fn in os.listdir('csv/{}'.format(y_dir))
             if '.csv' in fn]
    
    for csvf in csvfs:
        
        #读取csv,得到df
        df = pd.read_csv(csvf, encoding='utf-8', on_bad_lines='skip')
        #存入df列表
        dfs.append(df)
        
#合并dfs为alldf
alldf = pd.concat(dfs, axis=0)

#导出为data.csv
alldf.to_csv('enterprise-registration-data-of-chinese-mainland.csv', index=False)



三、数据获取

转发本文至朋友圈集赞50+, 加微信372335839, 备注【姓名-学校-专业-1200w工商】获取本文数据。



广而告之