2018/4/10

python基础教程

列表 and 方法

print(list(“hello”))
lst=list(“hellpo”)
print(lst.clear())
print(“I”,”wish”,’to’,’register’,’a’,’complaint’,sep=’_’)

x==y
x is y //x和y是同一个对象
x in y //x是容器y的成员
x not in y
x!=y

== 和 is 的区别
x=y=[1,2]
z=[1,2]
x==y 输出结果为真
x==z 输出结果为真
x is y 输出结果为真
x is z 输出结果为假

x和y指向同一个列表,是相同的对象,
但是和z是相等的,但是不是相同的。

assert 断言函数
类似于当在assert指定的条件不能满足的时候,程序中断,并给出错误提示。
语法:
assert conditon,”提示”
age = 10
assert 0

python 和数据库之间的连接

connect()函数创建一个连接对象,连接对象表示到SQL数据库的通信链路,使用方法cursor可从连接获得游标。
连接对象的方法如下:
close() 关闭连接对象。连接对象以及游标将不可用
commit() 提交未提交的事务
rollback() 回滚未提交的事务
cursor() 返回连接的游标对象

游标对象的方法:游标可以用来执行查询和查看结果。
execute(”’query”’[, params]) 执行SQL操作–可能指定参数
fetchall()

游标对象属性:
description

例子:
def connection(host=”,port=”,user=”,password=”,dbname=”):
connection=psycopg2.connect(host=host,port = port ,user = user, password=password,dbname=dbname)
return connect

MySQLdb默认查询结果都是返回tuple,通过使用不同的游标可以改变输出格式,这里传递一个cursorclass=cursors.DictCursor参数。

connection(host= , port= ,user= ,password= ,dbname= , cursorclass=MySQLdb.cursors.DictCursor)

def query(sql,connection = connection()):
cursor=connection.cursor()
cursor.execute(sql)
column_names = [desc[0] for desc in cursor.description]
res= cursor.fetchall() //获取所有查询结果
connection.close()
return res,column_names

cursor.execute(”’ create table %s (id int primary key,name varchar(30)) ”’,%table_name)
cursor.fetchmany(5) //查询五条记录
cursor.fetchone() //查询一条记录
cursor.fetchall() // 查询所有记录

<think>好的,我现在需要解决用户的问题:如何使用Python读取Excel文件中的猪肉牛肉价格数据到DataFrame,并绘制1月1日至10日的价格走势图,以及在2x1子图中展示整个前半月的价格趋势。让我一步步思考应该怎么做。 首先,用户提到了使用Python处理Excel数据并绘图,所以需要用到pandas库来读取Excel文件,以及matplotlib或seaborn来绘图。根据引用[3],pd.read_excel可以直接读取Excel文件到DataFrame,这应该是第一步。正确的语法是df = pd.read_excel("文件名.xlsx"),需要确保文件路径正确。 接下来,用户的数据包含2018年1月1日至15日的猪肉牛肉价格。数据读取后,可能需要检查日期列的格式是否为datetime类型,这样方便后续的日期筛选绘图。如果日期列被读成字符串,需要用pd.to_datetime转换。 然后,用户要求绘制1月1日至10日的价格走势。这里需要先筛选出日期在1月1日到1月10日之间的数据。可以用布尔索引,比如df[(df['日期'] >= '2018-01-01') & (df['日期'] <= '2018-01-10')]。注意日期比较时需要确保列是datetime类型。 关于绘图部分,用户需要两个图:一个是1-10日的价格走势线图,另一个是2x1子图展示前半月的趋势。第一个图可能单独绘制,而第二个图需要创建子图,使用plt.subplots(2,1)来生成两个子图,分别绘制猪肉牛肉的价格走势,或者同一子图中用两条线表示。需要明确用户的需求,但根据问题描述,应该是将两个图放在一个2x1的布局中,可能一个是前半月的猪肉价格,另一个是牛肉价格,或者同时展示两者的对比。 另外,日期在x轴上的显示可能需要调整格式,避免重叠,可以使用matplotlib的DateFormatter来设置日期格式。例如,设置x轴标签为“日期”,y轴为“价格”,并添加图例标题。 还需要注意数据中的列名是否正确,比如猪肉价格牛肉价格的列名是否准确,是否需要处理缺失值。如果Excel中有多个工作表,可能需要指定sheet_name参数。 现在,可能的问题点:如何正确读取Excel中的日期列,确保筛选正确;如何在子图中正确绘制两个图表;如何设置日期格式图表的美观性。 根据引用[2],使用pandas-datareader获取股票数据,但这里处理的是本地Excel,所以引用[3][4]更相关,特别是使用pd.read_excel。此外,引用[4]提到C#读取Excel两列数据绘图,但这里用Python的pandasmatplotlib实现类似功能。 接下来,分步骤实现: 1. 导入必要的库:pandasmatplotlib.pyplot。 2. 读取Excel文件到DataFrame。 3. 转换日期列为datetime类型。 4. 筛选1月1日至10日的数据。 5. 绘制该时间段的价格走势图。 6. 创建2x1子图,分别或同时展示前半月的猪肉牛肉价格趋势。 可能的代码结构: 读取数据: import pandas as pd import matplotlib.pyplot as plt df = pd.read_excel("示例数据.xlsx") df['日期'] = pd.to_datetime(df['日期']) 筛选数据: df_1_10 = df[(df['日期'] >= '2018-01-01') & (df['日期'] <= '2018-01-10')] 绘制1-10日走势: plt.plot(df_1_10['日期'], df_1_10['猪肉价格'], label='猪肉价格') plt.plot(df_1_10['日期'], df_1_10['牛肉价格'], label='牛肉价格') 添加标题、标签、图例等。 绘制子图: fig, axes = plt.subplots(2,1, figsize=(10,8)) axes[0].plot(df['日期'], df['猪肉价格'], color='red') axes[1].plot(df['日期'], df['牛肉价格'], color='blue') 调整子图布局等。 需要确保列名正确,比如用户的数据中列名是否为“猪肉价格”“牛肉价格”。可能需要根据实际数据调整列名。 另外,用户可能需要保存图像或显示图像,所以最后要调用plt.show()。 总结步骤,编写代码时需要注意路径是否正确,日期处理,以及图形的美观性。可能还需要处理中文显示的问题,需要设置matplotlib支持中文,否则会出现乱码。 例如,在代码开头添加: plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 这样确保图表中的中文能正确显示。 现在,检查是否有遗漏的步骤,比如数据验证,确保没有错误。比如,读取Excel后打印前几行数据,确认列名数据类型是否正确。如果有多个工作表,可能需要指定sheet_name参数。 最后,将代码分块说明,解释每个步骤的作用,让用户理解如何实现需求。</think>### 解决方案 #### 步骤1:导入必要库并读取Excel数据 使用`pandas`读取Excel文件,并用`matplotlib`进行绘图: ```python import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates # 读取Excel数据到DataFrame df = pd.read_excel("示例数据.xlsx") # 转换日期列为datetime类型 df['日期'] = pd.to_datetime(df['日期']) ``` #### 步骤2:筛选1月1日至10日的数据 ```python # 筛选指定日期范围 df_1_10 = df[(df['日期'] >= '2018-01-01') & (df['日期'] <= '2018-01-10')] ``` #### 步骤3:绘制1月1日-10日价格走势图 ```python plt.figure(figsize=(10, 5)) plt.plot(df_1_10['日期'], df_1_10['猪肉价格'], marker='o', label='猪肉价格') plt.plot(df_1_10['日期'], df_1_10['牛肉价格'], marker='s', label='牛肉价格') plt.title("1月1日-10日价格走势") plt.xlabel("日期") plt.ylabel("价格(元)") plt.legend() plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m-%d')) # 格式化日期显示 plt.grid(True) plt.show() ``` #### 步骤4:绘制2x1子图展示前半月的价格趋势 ```python fig, axes = plt.subplots(2, 1, figsize=(10, 8)) # 子图1:猪肉价格趋势 axes[0].plot(df['日期'], df['猪肉价格'], color='r', marker='o', label='猪肉价格') axes[0].set_title("1月1日-15日猪肉价格趋势") axes[0].set_ylabel("价格(元)") axes[0].xaxis.set_major_formatter(mdates.DateFormatter('%m-%d')) # 子图2:牛肉价格趋势 axes[1].plot(df['日期'], df['牛肉价格'], color='b', marker='s', label='牛肉价格') axes[1].set_title("1月1日-15日牛肉价格趋势") axes[1].set_ylabel("价格(元)") axes[1].xaxis.set_major_formatter(mdates.DateFormatter('%m-%d')) plt.tight_layout() plt.show() ``` ### 关键点说明 1. **数据读取**:通过`pd.read_excel`直接读取Excel文件到DataFrame[^3],需确保文件路径正确。 2. **日期处理**:将日期列转换为`datetime`类型,便于后续筛选绘图。 3. **图表优化**: - 使用`mdates.DateFormatter`格式化日期显示。 - 添加图例、标题网格线提升可读性。 - 在子图中分别展示两种价格趋势,并通过`plt.tight_layout()`调整布局。 ### 注意事项 - 若Excel列名不一致,需修改代码中的`猪肉价格``牛肉价格`字段。 - 中文显示问题需配置`plt.rcParams['font.sans-serif']`(示例代码已默认处理)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值