2020-09-17 学习总结

2020-09-22  本文已影响0人  奋斗的喵儿

一、python连接数据库
例如连接以下数据库:
数据库类型:MYSQL数据库(主数据库)
IP地址:127.0.0.0
用户名:frog
密码:Frog
数据库实例名:frogdata
1、python 连接mysql

import pymysql
cons = pymysql.connectt(
host = '127.0.0.0',
user='frog',
password='Frog', 
db = 'frogdata',    # 数据库
port =3306,   #端口
charset = 'utf8'
)
cur = cons.cursor()    #创建游标
cur.execute('select * from orderinfo')   #存储结果
data = cur.fetchall()  #调用结果
data   #查看数据,元组
cons.commit()    #增删改查
cur.close()
cons.close()  #关闭游标和数据库

2.pandas连接mysql
a、连接远程数据库
engine = create_engine("数据库类型+数据库驱动://数据库用户名:数据库密码@IP地址:端口/数据库?charset=编码格式")
mysql 默认端口3306

import pandas as pd
import pymysql
from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://frog:Frog@127.0.0.0:3306/frogdata?charset=utf8')
sql_cmd = 'select * from orderinfo'
data=pd.read_sql(sql = sql_cmd, con = engine)

b. 连接本地数据库
将上述读取的data 表存储到本地数据库test中,表名为data

engines=create_engine("mysql+pymysql://root:mysql@localhost/test")
data.to_sql(name = 'data', con = engine1)

二、查看数据类型的几种方式
1、python 自带函数 type()

import numpy as np
import pandas as pd

a = np.array([[1,2,3],[2,3,4]])
b = pd.DataFrame(a)
print(type(a))
print(type(b))

<class 'numpy.ndarray'>
<class 'pandas.core.frame.DataFrame'>
2、pandas 函数 info()

print(b.info())

结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):……

三、时间转字符串类型等,延伸时间函数总结
1、datetime转换为字符串,传递指定格式给strftime

from datetime import datetime
stamp = datetime(2020,9,21)
stamp.strftime('%Y-%m')

输出结果:
'2020-09'
2、字符串转换为datetime, datetime.strptime

value = '2020/09/21'
stamp.strptime(value,'%Y/%m/%d')

输出结果:
datetime.datetime(2020, 9, 21, 0, 0)

四、DataFrame中存在科学计数法
1、字符串

a = '1.23456789e6'
float(a)
# eval(a)

两个函数结果相同
1234567.89

五、其他
1、指定输出小数位数
print('%.4f' %a)
2、同时输入多个数字
num = list(map(int,input(‘请输入多个数字,中间为空格:’).split()))
3、栈中的元素按原顺序输出
s = Stack()
s.push('a')
s.push('b')
s.push('c')
print(''.join(s.items))
4、栈中的元素按逆序输出
s = Stack()
s.push('a')
s.push('b')
s.push('c')
strs.append(s.pop())
print(''.join(strs.items))

5、计算上下两行之间相除或相乘等一系列方法的函数使用方法
diff() shift()

df = pd.Series([1,3,7,4,9])
print(df.shift(3))
print(df.diff(2))

结果:
0 NaN
1 NaN
2 NaN
3 1.0
4 3.0
dtype: float64
0 NaN
1 NaN
2 6.0
3 1.0
4 2.0
dtype: float64
0 1
1 3
2 7
3 4
4 9
dtype: int64

6、总结DataFrame与Series类型区别
Series是一维的数组型对象
DataFrame是二维表结构

7、总结DataFrame专用的排序函数和列表的排序函数
DataFrame:
(1)按行或列索引进行字典型排序,使用sort_index, axis指定行或列索引
ascending 指定升降序排列

obj = pd.DataFrame(np.arange(8).reshape((2,4)),
                   index=['two', 'one'],
                   columns=['d','a','b','c'])
print(obj)
print(obj.sort_index(axis=1))

结果:
d a b c
two 0 1 2 3
one 4 5 6 7
a b c d
two 1 2 3 0
one 5 6 7 4
(2)使用1列或多列作为排序键,sort_values

obj = pd.DataFrame({'b':[4,7,-3,2],'a':[0,1,0,1]})
print(obj)
print(obj.sort_values(by='b'))
print(obj.sort_values(by=['a','b']))

结果:
b a
0 4 0
1 7 1
2 -3 0
3 2 1
b a
2 -3 0
3 2 1
0 4 0
1 7 1
b a
2 -3 0
0 4 0
3 2 1
1 7 1

list: sorted(a) 是新建已排序的列表, a.sort() 对a进行排序

a = [7,2,5,1,3]
a.sort()
print(a)

结果:[1, 2, 3, 5, 7]

8、总结存储到mysql的几种形式(覆盖、追加等)
engine = create_engine("数据库类型+数据库驱动://数据库用户名:数据库密码@IP地址:端口/数据库?charset=编码格式")
df.to_sql(name, con, flavor=None, schema=None, if_exists='fail', index=True, index_label=None, chunksize=None, dtype=None)
if_exists:
-fail',若表存在,不修改

上一篇 下一篇

猜你喜欢

热点阅读