python数据处理方法汇总

      工作中我们一般的数据形式都是以数据框形式存在的,不管从excel类似表格或者数据库中提取的数据,你都愿意更像excel那样直接操作,这句话主要是针对我来说的,哈哈,我就是先做了两年的excel,然后再慢慢学的R,再到现在的python,不过学的很吃力,所以给想学python的朋友一个建议,多学点英语,哪怕是单词也好,因为目前大多数好的资料还都是英文的,国内的还是不太多,就算有问题找百度,但是百度的资料也七七八八的,你恐怕很难一时半会儿能找到你想要的东西,所以你想好好深入的学习python,你不得不从python库的官方网站上查看使用方法。这里我也只是会把自己平时工作中遇到的情况做一些总结吧,有啥我就写啥,不定期往这篇文章加东西,直到我把这个忘了为止吧!

1、数据读取

通常我们的数据都是含有中文的数据,这时我们则需要加encoding='gbk',让python3能够识别,另存数据也一样:

import numpy as np
import pandas as pandas
data = pd.read_csv('data.csv', encoding='gbk', dtype={'ID':object}) # 因为ID字段前缀为00,所以需指定ID为object类型
data.to_csv('df.csv', index=False, encoding='gbk')
# excel读取的道理同上
data = pd.read_excel('数据.xlsx', encoding='gbk', dtype={'ID':object}

python数据处理方法汇总_第1张图片

查看数据类型:

data.dtypes
data['年龄'].dtype
data['ID'] = data['ID'].astype('int')
data['年龄'] = data['年龄'].astype('float')

python数据处理方法汇总_第2张图片

2、数据处理

将家庭成员数转换成数字:

data['家庭成员数'] = data['家庭成员数'].map(lambda x:x.split('人')[0]).astype('int')

split函数会得到两列,我们按“人”分列,所以第二列是空,这里直接取第一列就好,最后需要astype为整型

python数据处理方法汇总_第3张图片

3、数据库操作

1)mysql

python连接MySQL需要安装pymysql包,pip install pymysql

  1. 连接数据库并创建表
import pymysql

db = pymysql.connect = pymysql.Connect(host='localhost', port=3306, user='admin', passwd='admin', db='house', charset='utf8')
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS employee")
sql = """CREATE TABLE 'hp_price' (
        'id' int(10) NOT NULL AUTO_INCREMENT,
        'price'  int(11) DEFAULT NULL,
        'title'  char(50) DEFAULT NULL,
        'unitPrice' float DEFAULT NULL,
        'updateTime' char(20) DEFAULT NULL,
        'proportion' float DEFAULT NULL,
        'area0' char(20) DEFAULT NULL,
        'address0' char(80) DEFAULT NULL,
        'item' char(30) DEFAULT NULL,
        'area1' char(30) DEFAULT NULL,
        'address1' char(80) DEFAULT NULL,
        'type' char(20) DEFAULT NULL,
        PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""
cursor.execute(sql)

   2.将DataFrame中数据插入到mysql中

for i in range(len(data)):
    sql="insert into hp_price (price,title,unitPrice,updateTime,proportion,area0,address0,item,area1,address1,type) values ('%d','%s','%f','%s','%f','%s','%s','%s','%s','%s','%s')"%(data.loc[i,'price'],data.loc[i,'title'],data.loc[i,'unitPrice'],data.loc[i,'updateTime'],data.loc[i,'proportion'],data.loc[i,'area0'],data.loc[i,'address0'],data.loc[i,'item'],data.loc[i,'area1'],data.loc[i,'address1'],data.loc[i,'type'])
    cursor.execute(sql)

    3.删除表

sql = 'drop table hp_price'
cursor.execute(sql)

    4.查询

查询数据并转化为DataFrame数据框

sql = 'select * from data'
cursor.execute(sql)
results = pd.DataFrame(list(cursor.fetchall()),columns=['a', 'b', 'c'])
results

2)MongoDB

python连接MongoDB需要安装pymongo,pip install pymongo

      1.连接数据库并转换为DataFrame

client = pymongo.MongoClient('localhost', 27017)
db = client['data']
table = db['df']
data = pd.DataFrame(list(table.find()))
data.info()

 

      2.导出到Excel表

writer = pd.ExcelWriter('data.xlsx')
data.to_excel(writer, 'sheet1')
writer.save()

 

你可能感兴趣的:(python)