数据分析常用库之Pandas之数据库连接和条件查询与增删改查

1.数据库连接

import pandas as pd
import pymysql

#建立连接
db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', db='ncslab', charset='utf8')
sql = 'select id from test_rigs'


#用Pandas在python中操作
df1 = pd.read_sql(sql,db)
#查询文件头两行
a = df1.head(2)
print(a)

#条件查询

#多条件查询,两个条件同时满足的记录
df1[['列名1','列名2']][(df1['列名1']==458) & (df1['列名2']>3)]

#数据数值在一定范围内的记录
df1[['列名1','列名2']][df1['列名1'].between(10,30,inclusive=True)

#判断数据是否在某一列中
df1[['列名1','列名2']][df1['列名1'].isin(['数据1','数据2'])

#判断字符串是否在‘列1’中
df1[['列名1','列名2']][df1['列名1'].str.contains('字符串1')

#增删改查

#增加列
df1['列名1'] = df1['列名2']*df1['列名3']
df1['列名4'] ='现金支付'

#删除列
[坐标轴解释](https://www.cnblogs.com/rrttp/p/8028421.html)

#删除单列
df1.drop('列名1',axis = 1)#不作用于原数据,仅返回视图
df1.drop('列名1',axis = 1,inplace = True)#作用于原数据,原数据改变

#删除多列
df1.drop(['列名1','列名2'],axis = 1,inplace = True)
df1.columns#查看列名

#插入列
df1.insert(第几列,'列名',数据)
#删除行
df1.drop(label=[3,4], axis = 0,inplace = True)#删除第3行和第4行

#改变数据
#将‘列名’==458的列数据全部改为45800
df1.loc[order['列名']==458, '列名'] = 45800

#改变列名
df1.rename(columns = ['列名1':'改变列名'],inplace = True)
#改变行名,如果行是默认索引0,1,....则直接将'行名'换成索引值
df1.rename(index = ['行名':'改变行名'],inplace = True)

#简单数据统计,按列
df1.describe()



#模块化
# def query(table):
#     host = '127.0.0.1'
#     port = 3306
#     user = 'root'
#     passwd = '1234'
#     db = 'ncslab'
#     charset = 'utf8'
#     db = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset)
#     sql = 'select * from '+str(table)#注意 from后面一定有空格,否则会报错
#     results = pd.read_sql(sql, db)
#     return results
# df1 = query('test_rigs')
# a = df1.head(2)
# print(a)

#用sql语言在数据库操作


#把数据写入数据库

x = '9'
y = '风扇2'
#获取指针用于操作数据库
cur = db.cursor()
#写入数据库

#写入数据为变量
#sql = "insert into 表名(列名 , 列名) values('%s','%s')"%(x,y)

#直接写入
#sql = "insert into 表名(第一列数据 , 第二列数据,.....,最后一列数据) values('%s','%s')

sql =u"INSERT INTO test(mingzi,tezheng) VALUES('%s','%s')"%(x,y)

#执行sql指令
cur.execute(sql)
#提交操作
db.commit()

#关闭连接
cur.close()
db.close()

2.条件查询与增删改查

Python中使用pandas进行数据增删改查操作是不准确的,因为pandas主要用于数据分析与处理,不是专门针对数据操作的。如果你想要操作数据,可以使用其他专门的,如SQLAlchemy或者pyodbc。 下面是一个使用SQLAlchemy进行数据增删改查的示例: 1. 首先,安装SQLAlchemy: ``` pip install sqlalchemy ``` 2. 导入必要的和模块: ```python from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base ``` 3. 创建数据库连接和会话: ```python engine = create_engine('数据库连接字符串') Session = sessionmaker(bind=engine) session = Session() ``` 其中,'数据库连接字符串'需要根据你所使用的数据类型和配置进行相应的设置。 4. 创建数据表的映射类: ```python Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) ``` 这里创建了一个名为User的映射类,对应数据中的users表。 5. 插入数据: ```python user = User(name='Alice', age=25) session.add(user) session.commit() ``` 通过创建User类的实例,并通过session.add()方法添加到会话中,最后通过session.commit()方法提交更改,即可将数据插入到数据中。 6. 查询数据: ```python users = session.query(User).all() for user in users: print(user.name, user.age) ``` 通过session.query()方法查询User表中的所有数据,并通过.all()方法将结果以列表形式返回。然后可以对查询结果进行遍历操作。 7. 更新数据: ```python user = session.query(User).filter_by(name='Alice').first() user.age = 30 session.commit() ``` 通过session.query().filter_by()方法筛选特定数据,并通过.first()方法获取第一个匹配结果。然后可以对该对象的属性进行修改,最后通过session.commit()方法提交更改。 8. 删除数据: ```python user = session.query(User).filter_by(name='Alice').first() session.delete(user) session.commit() ``` 通过session.query().filter_by()方法筛选特定数据,并通过.first()方法获取第一个匹配结果。然后通过session.delete()方法删除该对象,最后通过session.commit()方法提交更改。 这样就可以使用SQLAlchemy进行数据增删改查操作了。当然,具体的操作还需要根据你所使用的数据类型和具体业务需求进行适当调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值