pandas操作mysql从放弃到入门

目录

  • 相关帮助文档
  • 一、如何读取数据库-read_sql
  • 二、如何筛选数据
  • 三、如何连表-merge
  • 四、如何删除一行或一列-drop
  • 五、如何分组统计-groupyby
  • 六、如何排序-sort_values/sort_index
  • 七、如何重建索引-groupby(as_index=False)/reset_index
  • 八、如何翻转dataframe-T
  • 九、如何重命名列-rename
  • 十、如何强制转换类型-astype
  • 十一、groupby只有一列时如何count-size
  • 十二、如何操作时间-.dt.
  • 十三、如何操作字符串-.str.
  • 十四、如何进行数据透视-pivot/pivot_table

相关帮助文档

一、如何读取数据库-read_sql

示例代码如下

from sqlalchemy import create_engine
import pandas as pd

username = '用户名'
password = '密码'
host = '连接地址'
db = '数据库'
port = 端口号

link = f'''mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8'''
engine = create_engine(link, pool_recycle=3600)

核心方法read_sql

log:pd.DataFrame = pd.read_sql("SELECT * FROM log ORDER BY id DESC ",engine)

执行结果如下

二、如何筛选数据

  • 筛选创建时间大于某个时间点的记录
import datetime
log[log['create_time'] > '2020-01-15 16:14:22']

  • 筛选指定列的DataFrame
    直接传递数组给给DataFrame
logs[['user_id','type']]

  • 获取一列Series
logs['type']

三、如何连表-merge

现在我需要将user_id对应的用户名找出来,示例代码如下

查询出所有的用户,以便将log和users做join
users:pd.DataFrame=pd.read_sql("SELECT * FROM users",engine)
users

  • users和log的字段太多,先做一下筛选
log=log[['type','user_id','project_id','create_time']]
users=users[['id','username','real_name']]

执行join,使用merge方法,how指定左连,left_on指定左表使用的字段, right_on指定右表使用的字段

log.merge(users,how='left',left_on='user_id',right_on='id')

四、如何删除一行或一列-drop

drop方法,axis为0代表行,1代表列

renameRes.drop('创建时间',axis=1)

五、如何分组统计-groupyby

dropRes.groupby(['type','real_name']).count()

六、如何排序-sort_values/sort_index

by指定字段,ascending指定升序还是降序

log.sort_values(by='user_id',ascending=False)

七、如何重建索引-groupby(as_index=False)/reset_index

默认groupby后的结果是行索引是groupby的字段

log.merge(users,how='left',left_on='user_id',right_on='id').groupby('type').count()


groupby指定参数as_index

log.merge(users,how='left',left_on='user_id',right_on='id').groupby('type',as_index=False).count()

另外,还可以count完后直接调用reset_index方法

log.merge(users,how='left',left_on='user_id',right_on='id').groupby('type').count().reset_index()

八、如何翻转dataframe-T

log.T

九、如何重命名列-rename

使用rename方法,传递一个字典即可,如下

pd.DataFrame = res[['type','username','real_name','create_time']].rename({'create_time':'创建时间'},axis=1)

十、如何强制转换类型-astype

log['create_time'].astype(str)

十一、groupby只有一列时如何count-size

count是必须依赖其他列做统计的,当只有一列的时候如何还使用count,是看不出统计字段的,正确的方法应该是使用size

test4=pd.read_sql("SELECT `type` FROM log LIMIT 100",engine)
test4.groupby('type').size()

十二、如何操作时间-.dt.

例如,要将create_time转为YY-MM-DD格式,可以使用函数.dt.date

log['create_time'].dt.date


具体方法可以参考Series的API文档的Datetime操作

十三、如何操作字符串-.str.

例如,转为大写

log['type'].str.upper()


具体方法可以参考Series的API文档的字符串操作

十四、如何进行数据透视-pivot/pivot_table

简单的理解就是一个更高级的groupy功能

df = pd.DataFrame({'foo': ['one', 'one', 'one', 'two', 'two',
                            'two'],
                    'bar': ['A', 'B', 'C', 'A', 'B', 'C'],
                    'baz': [1, 2, 3, 4, 5, 6],
                    'zoo': ['x', 'y', 'z', 'q', 'w', 't']})
df.pivot(index='foo', columns='bar', values='baz')

原文地址:https://www.cnblogs.com/chenqionghe/p/12197607.html

时间: 2024-11-01 19:55:24

pandas操作mysql从放弃到入门的相关文章

使用pandas操作MySQL数据库

转载(有添加.修改)作者:但盼风雨来_jc链接:https://www.jianshu.com/p/238a13995b2b來源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写.首先我们需要了解点ORM方面的知识 ORM技术   对象关系映射技术,即ORM(Object-Relational Mapping)技术,指的是把关系数据库的表结构映射到对象上,通过使用描述对象和数据库之间映射的元数

使用pandas操作mysql数据

代码如下: #导入 import pymysql import pandas as pd from sqlalchemy import create_engine #连接mysql engine = create_engine('mysql+pymysql://root:@localhost:3306/lg') #查询 sql = ''' select LGL_LSKU,LGL_NAME_LOCAL,LGL_RAW_ADDRESS from kfc limit 5; ''' df = pd.re

python & pandas链接mysql数据库

Python&pandas与mysql连接 1.python 与mysql 连接及操作,直接上代码,简单直接高效: 1 import MySQLdb 2 3 try: 4 5 conn = MySQLdb.connect(host='localhost',user='root',passwd='×××××',db='test',charset='utf8') 6 7 cur = conn.cursor() 8 9 cur.execute('create table user(id int,nam

转:C++操作mysql方法总结(1)

原文:http://www.cnblogs.com/joeblackzqq/p/4332945.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 ? ? 使用vs2013和64位的msql 5.6.16进行操作 ? ? ? ? 项目中使用的数据库名为booktik 表为book ---. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mysql的C api进行操作 ? ? 1.新建一个空项目 ? ? 2.

C++操作mysql方法总结(1)

列举出了C++操作mysql数据库的几种方法 通过mysql的c api和通过mysql的Connector C++ 1.1.3进行操作的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名为booktik 表为book ………. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mysql的C api进行操作 1.新建一个空工程 2.将D:\Program Files\MySQL\MySQL Server 5.6\include添加到项目的包含

python&pandas 与mysql 连接

1. python 与mysql 连接及操作,直接上代码,简单直接高效: import MySQLdb try: conn = MySQLdb.connect(host='localhost',user='root',passwd='×××××',db='test',charset='utf8') cur = conn.cursor() cur.execute('create table user(id int,name varchar(20))' ) value = [1,'jkmiao']

C++操作mysql方法总结(1)[转载]

C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名为booktik 表为book ………. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mysql的C api进行操作 1.新建一个空项目 2.将D:\Program Files\MySQL\MySQL Server 5.6\include添加到项目的包含目录中(根据具体路径而定) 3.将

[mysql] C++操作mysql方法总结(1)

From: http://www.cnblogs.com/magicsoar/p/3817518.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名为booktik 表为book ………. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mysql的C api进行操作 1.新建一个空项目 2.将D:\Program Files\M

[mysql] C++操作mysql方法

下载:http://mirrors.sohu.com/mysql/MySQL-5.5/ From: http://www.cnblogs.com/magicsoar/p/3817518.html C++通过mysql的c api和通过mysql的Connector C++ 1.1.3操作mysql的两种方式 使用vs2013和64位的msql 5.6.16进行操作 项目中使用的数据库名为booktik 表为book ---. (共有30条记录,只列出了部分记录,14-30未列出) 一.通过mys