| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 数据分析--03:Pandas -> 正文阅读 |
|
[Python知识库]数据分析--03:Pandas |
??? ??--03: ??一、Pandas介绍与安装1、为什么会有Pandas?
2、Pandas是什么?
3、Pandas涉及内容4、Pandas的安装
二、Pandas基础数据结构1、Series1.Series介绍
2.Series的创建
data可为iterable, dict, or scalar value
索引默认为
|
类型 | 描述 |
---|---|
df[索引]或df['标签’] | 表示对行操作 |
df[“列标签”]或 df[[“列标签”,“列标签”]] | 表示对列进行操作 |
import numpy as np
import pandas as pd
# 索引
p1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['A', 'B', 'C'], columns=['a', 'b', 'c'])
print(p1)
#1.查a列(必须先列后行)
print(p1['a'])
print(p1['a']['A'])
练习一
df.loc[]
通过轴标签选择数据df.iloc[]
通过整数索引选择数据具体使用如下:
类型 | 描述 |
---|---|
df.loc[val] | 根据标签索引选择DataFrame的单行或多行 |
df.loc[:,val] | 根据标签索引选择DataFrame的单列或多列 |
df.loc[val1,val2] | 同时选择行和列中的一部分 |
df.iloc[where] | 根据位置索引选择DataFrame的单行或多行 |
df.iloc[:,where] | 根据位置索引选择DataFrame的单列或多列 |
df.iloc[where_i,where_j] | 根据位置索引选择行和列 |
import numpy as np
import pandas as pd
# 索引
p1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['A', 'B', 'C'], columns=['a', 'b', 'c'])
print(p1)
# 2.高级索引操作
print(p1.loc['A'])
print(p1.loc['A']['a'])
import numpy as np
import pandas as pd
# 索引
p1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['A', 'B', 'C'], columns=['a', 'b', 'c'])
print(p1)
# 3.修改数组
p1['a'] = 7
print(p1)
p1.loc['A'] = 0
print(p1)
注意:Pandas中可以直接赋值np.nan,且赋值当前列数据会自动转为浮点类型。而不是整个数组都转,这主要是因为Pandas数据可以是异质性。
新增列:df["新的列标签"] = 值
注意:添加列,则新添加的值的长度必须与其它列的长度保持一致,否则会报错。
插入列:如果需要在数据中插入列,则使用 df.insert(loc, column, value)
添加行:df.loc[“新的行标签”,:] = 值
除此之外,我们还可以通过 df.append(df2) 方法添加行,但类似于数组与数组的堆叠拼接。所以df2的列索引必须同df一致。
import numpy as np
import pandas as pd
# 索引
p1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['A', 'B', 'C'], columns=['a', 'b', 'c'])
print(p1)
# 增加数据
p1['A'] = 9
# print(p1)
p1.loc['d'] = 0
print(p1)
法1:del df[“列标签”]
法2:df.drop(axis=0,index=None,columns=None, inplace=False)
import numpy as np
import pandas as pd
# 索引
p1 = pd.DataFrame(np.arange(9).reshape(3, 3), index=['A', 'B', 'C'], columns=['a', 'b', 'c'])
print(p1)
# 删除数据
del(p1['A'])
print(p1)
p1.drop('d', axis=0, inplace=True) # 删除行 inplace=True相当于在原数据上修改
print(p1)
方法 | 描述 |
---|---|
add, radd | 加法(+) |
sub, rsub | 减法(-) |
div, rdiv | 除法(/) |
floordiv, rfloordiv | 整除(//) |
mul, rmul | 整除(//) |
pow, rpow | 幂次方(**) |
注意:Series使用算术方法,不支持指定填充值
方法 | 描述 |
---|---|
count | 非NA值的个数 |
min,max | 最小值,最大值 |
idxmin,idxmax | 最小值,最大值的标签索引 |
sum | 求和 |
mean | 平均值 |
median | 中位数 |
var | 方差 |
std | 标准差 |
cumsum | 累计值 |
cummin,cummax | 累计值的最小值或最大值 |
cumprod | 值的累计积 |
diff | 计算第一个算术差值(时间序列) |
pct_change | 百分比 |
corr | 按索引对其的值的相关性 |
cov | 协方差 |
df.sort_index(axis=0,ascending=True)
# 索引排序
axis
指定轴,默认为0轴ascending
为排序方式,默认为True表示升序df.sort_values(by)
# 值排序
by
指定一列或多列作为排序键注意
by = [col1,col2] 是先给col1排序 当col1有相同值时,col2中按排序顺序再排序
练习
关于猫的名字的统计数据,获取用次数最高的名字/
df.apply(func, axis=0)
# 通过 apply 将函数运用到列 或者 行df.applymap(func)
# applymap将函数应用到每个数据上pd.isnull(df)
返回哪些值是缺失值的布尔值pd.notnull(df)
返回值是isnull的反集import pandas as pd
import numpy as np
df1 = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])
print(df1)
# 检测方法
print(df1.isnull().sum()) # df1.isnull().sum()默认读取数据内为Ture的个数
print(df1.notnull().sum())
注意:python内建的None值也被当作NaN值。
dropna(axis=0,how='any',inplace=False)
axis
指定轴 默认为0 代表行how
默认为any 代表删除含有NaN的行 当为all 时代表删除所有值为NaN的行inplace
修改被调用的对象 而不是一个备份import pandas as pd
import numpy as np
df1 = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])
print(df1)
# 检测方法
print(df1.isnull().sum()) # df1.isnull().sum()默认读取数据内为Ture的个数
print(df1.notnull().sum())
# 删除缺失值
print(df1.dropna()) # 删除存在缺失值的行
print(df1.dropna(axis=1)) # 删除尊在缺失值的列
print(df1.dropna(how='all'))
df.fillna(value=None,method=None,axis=None,inplace=False,limit=None)
value
标量或字典对象用于填充缺失值method
插值方法 默认为"ffill"axis
需填充的轴 默认为0inplace
修改被调用的对象 而不是一个备份limit
用于向前或向后填充时最大的填充范围import pandas as pd
import numpy as np
df1 = pd.DataFrame([np.random.randn(3), [1., 2., np.nan], [np.nan, 4., np.nan], [1., 2., 3.]])
print(df1)
# 检测方法
print(df1.isnull().sum()) # df1.isnull().sum()默认读取数据内为Ture的个数
print(df1.notnull().sum())
# 删除缺失值
print(df1.dropna()) # 删除存在缺失值的行
print(df1.dropna(axis=1)) # 删除尊在缺失值的列
print(df1.dropna(how='all'))
# 填充平均值
print(df1.fillna(df1.mean()))
print(df1.fillna(method='ffill')) # 下拉填充
print(df1.fillna(method='bfill')) # 向后填充
fillna
填充。使用replace更加灵活。
df.replace(to_replace=None,value=None)
to_replace
去替换的值value
替换的值import pandas as pd
# 一、数据中显性问题
## 缺失数据
## 重复数据
data = pd.read_csv('数据/guazi.csv', engine='python', encoding='utf-8')
print(data)
print(data.info()) # 查看表格信息
## 1.异常数据
print(data.drop([4, 9], inplace=True)) # 删除(4, 9)异常数据 ,仅运行一次
print(data.head())
df.duplicated(subset=None, keep='first')
返回的一个布尔值Series 默认反映的是每一行是否与之前出现过的行相同
subset
指定子列判断重复keep
默认为first保留首个出现的 last保留最后出现的df.drop_duplicates()
返回的是DataFrame 默认删除重复行
subset
指定的数据任何子集是否有重复keep
默认为first保留首个出现的 last保留最后出现的import pandas as pd
import numpy as np
# 一、数据中显性问题
## 缺失数据
## 重复数据
data = pd.read_csv('数据/guazi.csv', engine='python', encoding='utf-8')
print(data)
print(data.info()) # 查看表格信息
## 1.异常数据
print(data.drop([4, 9], inplace=True)) # 删除(4, 9)异常数据 ,仅运行一次
print(data.head())
# 重新生成新的索引对象
print(data.reset_index())
# 检测
print(data.duplicated().sum())
# 删除重复数据
data.drop_duplicates(inplace=True)
print(data)
pd.cut(x,bins)
将连续数据x进行离散化
x
要进行离散化的数据bins
分组pd.value_counts(cates)
统计每个区间的数值分布import pandas as pd
import numpy as np
ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
#
bins = [18, 25, 35, 60, 100]
c = pd.cut(ages, bins)
# print(c)
print(pd.value_counts(c)) # 统计区间内元素的数量
print(pd.cut(ages, bins, right=False))
data = {
"names":["胡歌","金世佳","林更新","郭麒麟","小岳岳"],
"grades":np.random.randint(1,100,size=5)
}
df = pd.DataFrame(data)
使用:df[“列标签”].map(“映射到的数据”)
data = {
"names":["bob","amy","cheney","jerry"],
"grades":np.random.randint(60,100,size=4)
}
df2 = pd.DataFrame(np.random.randint(60,100,size=(4,2)),index=["bob","amy","cheney","jerry"])
df2
使用:
练习:读取 catNames2.csv ,找到所有的使用次数超过700并且名字的字符串的长度大于4的动物的名字
将分类变量转换为"虚拟"或"指标"矩阵是另一种用于统计建模或机器学习的转换操作。如果DataFrame中的一列有k个不同的值,则可以衍生一个K列的值为1和0的矩阵或DataFrame。
pd.get_dummies()
将分类变量转换为"虚拟"或"指标"矩阵但是,如果说DataFrame中的一行属于多个类别,情况就会比较复杂。如下图
df.index
df.index = [,]
个数必须一致df.reindex([,])
无需个数一致df.set_index("M",drop=False)
df.set_index("M").index.unique()
df.reset_index()
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a':range(7),
'b':range(7,0,-1),
'c':['one','one','one','two','two','two','two'],
'd':list("hjklmno")
})
df.set_index(["c","d"])
import pandas as pd
import numpy as np
s1 = pd.Series(np.random.randn(12),index=[['a','a','a','b','b','b','c','c','c','d','d','d'],[0,1,2,0,1,2,0,1,2,0,1,2]])
# print(s1)
# print(type(s1.index))
# print(s1.index)
# 层级索引
## 1.外层索引
# print(s1['a'])
## 2.内层索引
# print(s1['a'][0])
# print(s1[8])
# 切片
# print(s1[3:6])
#13400522220
# print(s1[3:9])
# 外层,内层为0
# print(s1[:, 0])
# print(s1.loc[:, [0, 1, 4]])
# 1.swaplevel 交换内外层
s2 = s1.swaplevel()
# print(s2)
# print(s2[0])
# print(s2.loc[[0, 1]])
print(s1.unstack()) # 转变成表,Series转变成DataFrame
# 2.sortlevel()
s3 = s1.swaplevel().sortlevel()
print(s3)
pandas.merge, pandas.concat, df.join
。基于列进行关联,是做常用的一种方法。
import pandas as pd
import numpy as np
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False)
import pandas as pd
import numpy as np
"""
创建数组1
"""
polls = {"sites":["迈皋桥", "草场门", "浦口", "奥体中心", "仙林大学城"],
"AQI":[55, 75, 69, 74, 58],
"PM25":[30, 54, 47,40 ,27],
"SO2":[10, 15, 13, 17, 10]}
sites = {"names":["迈皋桥", "草场门", "浦口", "奥体中心", "玄武湖"],
"regions":["栖霞区", "鼓楼区", "浦口区", "建邺区", "玄武区"],
"weather":["晴", "晴", "多云", "阴", "晴"]}
# 读取数据集,把字典格式转变为DataFrame格式
df_polls = pd.DataFrame(polls)
df_sites = pd.DataFrame(sites)
"""
创建数组2
"""
# 定义左侧数据集
df_left = pd.DataFrame({"sites":["迈皋桥", "草场门", "浦口", "迈皋桥", "草场门", "浦口"],
"date":["2020-12-08", "2020-12-08", "2020-12-08", "2020-12-07", "2020-12-07", "2020-12-07"],
"AQI":[55, 75, 69, 45, 35, 53]})
# 定义右侧数据集
df_right = pd.DataFrame({"sites":["迈皋桥", "草场门", "迈皋桥", "草场门"],
"date":["2020-12-08", "2020-12-08", "2020-12-09", "2020-12-09"],
"weather":["晴", "晴", "多云", "阴"]})
"""
创建数组3
"""
sites_with_index = pd.DataFrame({"regions":["栖霞区", "鼓楼区", "浦口区", "建邺区", "玄武区"]},
index=["迈皋桥", "草场门", "浦口", "奥体中心", "玄武湖"])
import pandas as pd
import numpy as np
# pd.merge
# join
left = pd.DataFrame({
'key':['K0', 'K1', 'K2', 'K3'],
'A':['A0', 'A1', 'A2', 'A3'],
'B':['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
'key':['K0', 'K1', 'K2', 'K3'],
'C':['C0', 'C1', 'C2', 'C3'],
'D':['D0', 'D1', 'D2', 'D3']
})
# print(left)
# print(right)
p1 = pd.merge(left, right, on='key') # on='key'指定公用键
# print(p1)
df3 = pd.DataFrame({
'name':['mark', 'Bob', 'Sam', 'Jake'],
'group':['IT部', 'HR部', '运营部', '设计部']
})
df4 = pd.DataFrame({
'name':['Sam', 'Bob', 'mark', 'Jake'],
'date':[2004, 2008, 2012, 2014]
})
# print(df3)
# print(df4)
# print(pd.merge(df3, df4))
left = pd.DataFrame({
'key1':['K0', 'K1', 'K1', 'K2'],
'key2':['K0', 'K1', 'K0', 'K1'],
'A':['A0', 'A1', 'A2', 'A3'],
'B':['B0', 'B1', 'B2', 'B3']
})
right = pd.DataFrame({
'key1':['K0', 'K1', 'K1', 'K2'],
'key2':['K0', 'K0', 'K0', 'K0'],
'C':['C0', 'C1', 'C2', 'C3'],
'D':['D0', 'D1', 'D2', 'D3']
})
print(pd.merge(left, right, how='inner')) # 默认连接方式,内连接,数据交集
print(pd.merge(left, right, how='outer')) # 全连接,外连接,数据并集
print(pd.merge(left, right, how='lift')) # 左连接
print(pd.merge(left, right, how='right')) # 右连接
join方法是基于index连接dataframe。join连接方法有内连接,外连接,左连接和右连接,与merge一致。
import pandas as pd
import numpy as np
"""
创建数组4
"""
polls_with_index = pd.DataFrame({"AQI":[55, 75, 69, 74, 58],
"PM25":[30, 54, 47,40 ,27],
"SO2":[10, 15, 13, 17, 10]},
index=["迈皋桥", "草场门", "浦口", "奥体中心", "仙林大学城"])
另外一种常用的数据整合方法是concat,即我希望按照某种方式把两个规整的数据集进行拼接。
import pandas as pd
import numpy as np
pd.concat(objs, axis=0, join='outer', keys=None)
import pandas as pd
import numpy as np
"""
创建数组5
"""
new_polls = {"sites":["迈皋桥", "草场门", "浦口", "奥体中心", "仙林大学城"],
"AQI":[65, 85, 79, 78, 78],
"PM25":[50, 74, 67,60 ,47],
"O2":[20, 35, 23, 37, 15]}
df_polls_new = pd.DataFrame(new_polls)
import pandas as pd
import numpy as np
# numpy数组的合并
x = np.array([[1, 2], [3, 4]])
y = np.array([[5, 6], [7, 8]])
# print(x)
# print(y)
# x1 = np.concatenate([x, y], axis=1)
# print(x1)
df1 = pd.DataFrame(np.arange(6).reshape(3, 2), index=list('abc'), columns=['one', 'two'])
df2 = pd.DataFrame(np.arange(4).reshape(2, 2)+5, index=list('ac'), columns=['one', 'two'])
print(df1)
print(df2)
## 合并数据
# 1. append
d1 = df1.append(df2)
# print(d1)
# 2. concat
d2 = pd.concat([df1, df2], axis=1, sort=True)
print(d2)
数据包含在Series、DataFrame数据结构中,可以根据一个或多个键分离到各个组中。分组操作之后,一个函数就可以应用到各个组中,产生新的值。
df.groupby('key')
key为指定分组的列import pandas as pd
import numpy as np
df1 = pd.DataFrame(
{
"names":["菲菲","小可爱","mia","牛哥","老王","mia","狼人","药水哥","药水哥"],
"classes":["一班","二班","三班"]*3,
"grades":np.random.randint(60,100,size=9)
}
)
df1
df1.groupby(by="classes")["grades"].mean()
聚合函数如下:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({
'fruit':['apple', 'banana', 'orange', 'apple', 'banana'],
'color':['red', 'yellow', 'yellow', 'cyan', 'cyan'],
'price':[8.5, 6.8, 5.6, 7.8, 6.4]
})
# print(df1)
# 求苹果的平均价格
# df2 = df1[df1['fruit'] == 'apple']
# print(df2)
# n = df2['price'].sum()/len(df2)
# print(n)
#
# df2 = df1.groupby(by='fruit')
# for name,group in df2:
# print(name)
# print('*'*30)
# print(group)
# 求苹果的平均价格
# df2 = dict(list(df1.groupby(by='fruit')))['apple']
# print(df2)
df2 = df1.groupby(by='fruit')['price'].mean()
# print(df2)
# 语法糖
df3 = df1.groupby(by='fruit')[['price']].mean()
# print(df3)
df4 = df1.groupby(by=['fruit', 'color'])['price'].mean()
# print(df4)
df5 = df1.groupby(by=['fruit', 'color'])['price'].mean().unstack()
# print(df5)
实现步骤:
import pandas as pd
import numpy as np
def classes_ptp(x):
return x.max()-x.min()
df1.groupby(by="classes")["grades"].agg(classes_ptp)
df1.groupby(by="classes")["grades"].aggregate(classes_ptp)
实现步骤:
import pandas as pd
import numpy as np
def sort_df(df):
return df.sort_values(by="grades")
df1.groupby(by="classes").apply(sort_df)
除了以上分组形势,还可以通过字典、series、函数进行分组。
import pandas as pd
import numpy as np
df2 = pd.DataFrame(
np.random.randint(60,100,size=(5,3)),
index=["菲菲","小可爱","mia","牛哥","老王"],
columns=["语文","数学","英语"]
)
df2
时间序列数据在很多领域都是重要的结构化数据形式,比如:金融,神经科学,生态学,物理学。在多个时间点观测的数据形成了时间序列。时间序列可以是固定频率的,也可以是不规则的。
import pandas as pd
import numpy as np
import time
time.time()
import pandas as pd
import numpy as np
import time
t = time.localtime(time.time()) # 转化为本地时区
print(t)
g = time.gmtime(time.time()) # 转化为0时区
print(g)
print(t.tm_mday)
import pandas as pd
import numpy as np
import time
PM = time.strftime('%Y-%m-%d %H:%M:%S',t)
print(PM)
q = time.strptime('2021-08-14 15:13:25', '%Y-%m-%d %H:%M:%S')
print(q)
import pandas as pd
import numpy as np
import time
w = time.ctime(time.time())
print(w)
import pandas as pd
import numpy as np
import time
m = time.mktime(t)
print(m)
import pandas as pd
import numpy as np
from datetime import datetime
# 日期模块和实际数据类型
now = datetime.now() # 取现在时间
print(now)
print(now.year, now.month, now.day)
import pandas as pd
import numpy as np
from datetime import datetime
d = datetime(2021, 12, 12, 20, 0, 0) - datetime(2021, 12, 11, 1, 0, 0)
print(d)
print(type(d))
import pandas as pd
import numpy as np
from datetime import datetime
stamp = datetime(2021, 8, 12)
# 强制转换
print(str(stamp))
# 格式化(可自定义符号)
print(stamp.strftime('%Y-%m-%d %H:%M:%S'))
d = ['12/12/2021 20:00:00', '1/1/2021 12:00:00']
p = pd.to_datetime(d)
print(p)
Pandas中的基础时间序列种类是由时间戳索引的Series,在Pandas外部通常表示为Python字符串或datetime对象。
注意
pd.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False)
import pandas as pd
import numpy as np
d1 = pd.date_range(start="20200101",end="20200201")
d1
d2 = pd.date_range(start="20200101",end="20200201",periods=5)
d2
d3 = pd.date_range(start="20200101",periods=5,freq="10D")
d3
d4 = pd.date_range(start="2020-01-01 12:59:59",periods=5,freq="10D",normalize=True)
d4
关于频率设置如下:
具体可参考:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases
import pandas as pd
import numpy as np
ts=pd.Series(np.random.randint(1,100,size=800),index=pd.date_range("20180101",periods=800))
ts
# 选择2020的数据
ts['2020']
# 选择2020的一月份数据
ts['2020 01']
# 取2020年5月01至5月10的数据
ts['2020 05 01':'2020 05 10']
df.indexis_unique
检查索引是否唯一"移位"指的是将日期按时间向前移动或向后移动。Series和DataFrame都有一个shift方法用于进行简单的前向或后向移位 而不改变索引
import pandas as pd
import numpy as np
ts=pd.Series(np.random.randint(1,100,size=800),index=pd.date_range("20180101",periods=800))
ts.shift(2) # 向前移动
ts.shift(-2) # 向后移动
import pandas as pd
import numpy as np
ts = pd.DataFrame(np.random.randint(100,200,size=100),index=pd.date_range(start="20200101",periods=100))
ts
ts.resample("M").mean()
以上为时间序列的基本内容。
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(1000,4000,size=(4,4)),index=[20200101,20200102,20200103,20200104],columns=["北京","上海","广州","深圳"])
df
read_csv(file_path or buf,usecols,encoding):file_path
:文件路径,usecols:指定读取的列名,encoding:编码import pandas as pd
import numpy as np
data = pd.read_csv('d:/test_data/food_rank.csv',encoding='utf8')
data.head()
name num
0 酥油茶 219.0
1 青稞酒 95.0
2 酸奶 62.0
3 糌粑 16.0
4 琵琶肉 2.0
#指定读取的列名
data = pd.read_csv('d:/test_data/food_rank.csv',usecols=['name'])
data.head()
name
0 酥油茶
1 青稞酒
2 酸奶
3 糌粑
4 琵琶肉
#如果文件路径有中文,则需要知道参数engine='python'
data = pd.read_csv('d:/数据/food_rank.csv',engine='python',encoding='utf8')
data.head()
name num
0 酥油茶 219.0
1 青稞酒 95.0
2 酸奶 62.0
3 糌粑 16.0
4 琵琶肉 2.0
#建议文件路径和文件名,不要出现中文
DataFrame:to_csv(file_path or buf,sep,columns,header,index,na_rep,mode)
:file_path:保存文件路径,默认None,sep:分隔符,默认’,’ ,columns:是否保留某列数据,默认None,header:是否保留列名,默认True,index:是否保留行索引,默认True,na_rep:指定字符串来代替空值,默认是空字符,mode:默认’w’,追加’a’**Series**:`Series.to_csv`\(_path=None_,_index=True_,_sep='_,_'_,_na\_rep=''_,_header=False_,_mode='w'_,_encoding=None_\)
# 导入必要模块
import pandas as pd
from sqlalchemy import create_engine
#初始化数据库连接
#用户名root 密码 端口 3306 数据库 db2
engine = create_engine('mysql+pymysql://root:@localhost:3306/db2')
#查询语句
sql = '''
select * from class;
'''
#两个参数 sql语句 数据库连接
df = pd.read_sql(sql,engine)
df
#新建
df = pd.DataFrame({'id':[1,2,3,4],'num':[34,56,78,90]})
df = pd.read_csv('ex1.csv')
# #写入到数据库
df.to_sql('df2',engine,index=False)
print("ok")
进入数据库查看 :
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 16:40:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |