背景知识视频教程
Pandas操作数据 - 国外课栈viadean.com![69073adab515a9eea7cdb2f3b136fd91.png](https://i-blog.csdnimg.cn/blog_migrate/e01f596e995938aaddf6e37b96385929.jpeg)
![278a4ffc01548f52f680c219ffff0ff7.png](https://i-blog.csdnimg.cn/blog_migrate/1acd5fac6ea6ede9b240149dfe9b899d.png)
![1d664404b5998a9534f2afd2c37d8d43.png](https://i-blog.csdnimg.cn/blog_migrate/64de56c6de2f255dbdc485e05c6a81fc.jpeg)
使用pyodbc
我们将使用sakila数据库,MYSQL的示例。
借助pyodbc库(您也可以使用MYSQLDB库),我们可以创建到数据库的连接字符串:
#Connection to MYSQL Server
import pyodbc
mydb = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=sakila; UID=root; PASSWORD=12345;")
注意:要使用PYODBC库,您需要为使用的数据库系统安装一个有效的ODBC连接器。
我们可以做的整洁的事情之一是使用python格式化功能,通过提示用户输入用户名和密码来为连接字符串提供参数-避免显式输入密码:
user = input('Provide user: n')
pwd = input('Provide password: n')
mydb = pyodbc.connect("DRIVER={MySQL ODBC 8.0 ANSI Driver}; SERVER=localhost; PORT=3306;DATABASE=sakila; UID=%s; PASSWORD=%s;" % (user, pwd))
注意,user和pwd将如何替换连接字符串中的%s,使其等效于第一个示例。
要使用pyodbc查询数据库,只需创建一个游标并执行所需的任何查询。 在示例中,我们将从电影数据库中选择“标题和发行年份”(无需显式数据库名称,因为我们在连接中仅与之连接):
cursor = mydb.cursor()
cursor.execute('select title, release_year from film')
在运行查询之后,我们可以使用以下方法获得结果:
cursor.fetchall()
但是有一个警告,cursor.fetchall()返回Python列表,而不是存储表格数据的最有效/用户友好的方法。
#Movie name and title returning from query list
[('ACADEMY DINOSAUR', 2006),
('ACE GOLDFINGER', 2006),
('ADAPTATION HOLES', 2006),
('AFFAIR PREJUDICE', 2006),
('AFRICAN EGG', 2006)]
我们可以使用以下命令将此对象转换为pandas DataFrame(df):
movies_release_year = pd.DataFrame([tuple(t) for t in cursor.fetchall()])
如果检查Movies_release_year的dataframe,则该对象看起来很奇怪,因为它没有有关该表的列名或其他元数据。
幸运的是,pandas为我们提供了一种在基础查询中将SQL表转换为DataFrames的巧妙方法-输入pandas read_sql_query方法:
movies_release_year = pd.read_sql_query('select title, release_year from film', mydb)
如果您使用movies_release_year.columns和movies_release_year.index检查movies_release_year的对象元数据,则会得到以下输出:
#For columns
Index(['title', 'release_year'], dtype='object')
#For row indexes
RangeIndex(start=0, stop=1000, step=1)
现在,列名正确显示,我们可以从对象数据框中使用movies_release_year [“ title”]或movies_release_year.title来调用它们。SQL等效于“select title from film”,但是行索引有些麻烦,自然,我们的查询没有读取“主键/索引”。 Pandas dataframe索引函数类似于SQL表索引,并且要显式索引的列,我们可以简单地将参数传递给read_sql_query:
movies_release_year = pd.read_sql_query('select film_id, title, release_year from film', mydb, index_col = 'title')
使用Pandas将MySQL数据库加载到BigQuery中
使用Flask将Pandas dataframe(MySQL数据)转换为CSV
加快批量插入数据库的速度
Pickle MySQL表数据
使用SQLAlchemy将Pandas连接到数据库
使用Pandas展平JSON请求
Pandas处理MySQL数据 - 国外课栈viadean.com![ea2be31fce6b432bd09a15e0bc8585ac.png](https://i-blog.csdnimg.cn/blog_migrate/fc0c9649dd0272575c374925a71a026e.png)