python快速入门

序列

列表

list0=[1,'2',True,3]
list0.append(4)
print(list0[3])
print(list0[1:3])

元组

tuple0=(1,2,3,4,5)
print(type(tuple0))
print(tuple0[1:3])
#tuple0[1]=10
print(tuple0)

字典

dict0={'name':'张三','age':18}
print(dict0['name'])
dict0['name']='李四'
print(dict0['name'])
dict1={'1':'张三','1':'李四'}
print(dict1['1'])#如果键重复,则后面的值会覆盖前面的值

集合

set0={1,2,3,4,1,5}
print(type(set0))
print(set0)#集合中的元素是无序的,且不能重复

各种结构

条件语句

a=2
if a>1:
    print('a>1')
elif a==1:
    print('a=1')
else:
    print('a<1')

循环结构

num=0
while num<5:
    print(num)
    num+=1
    if num==3:
        print('num=3')
        break

函数

#打印菱形
for i in range(5):
    print(' '*(5-i-1)+'*'*(2*i+1))
for i in range(4):
    print(' '*(i+1)+'*'*(7-2*i))

文件

#打开文件
file=open('test.txt','r',encoding="utf-8")
#读取文件
context=file.readlines()
print(context)
#关闭文件
file.close()
#写入文件
file=open('test.txt','w',encoding="utf-8")
file.write('hello,world')
file.close()

模块安装与导入

#pip
pip --version #查看pip版本
pip install some-package-name #安装包
pip uninstall some-package-name #卸载包
pip list #查看已安装的包
#conda
conda install some-package-name #安装包
conda uninstall some-package-name #卸载包
conda list #查看已安装的包

数值计算numpy

import numpy as np

#1.数组的创建
arr=np.array([1,2,3,4,5])
print(arr)
print(type(arr))
arr1=np.array([[1,2,3,4,5],[1,2,3,4,5]])
print(arr1)
print(type(arr1))
print(arr1.shape)#查看数组的维度

#2.索引和切片
print(arr[0])
print(arr[0:3])
print(arr1[1][2])

#3.数组的运算 +-*/对应位置的元素相加减乘除
arr2=np.array([1,2,3,4,5])
print(arr+arr2)
print(arr*arr2)

#4.数组的形状
arr3=np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])
print(arr3.shape)
new_array=arr3.reshape(2,6)
print(new_array,"新数组的形状是",new_array.shape)
new_arr_T=new_array.transpose()
print(new_arr_T,"新数组的转置是",new_arr_T.shape)

#5.线性代数/统计
arr4=np.array([1,2,3])
arr5=np.array([4,5,6])
arr4_dot_arr5=np.dot(arr4,arr5)
print(arr4_dot_arr5)
arr=np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6]])
print("数组的平均值",arr.mean())
print("数组的最大值",np.max(arr))
print("数组的最小值",np.min(arr))
print("数组的和",np.sum(arr))
print("数组的标准差",np.std(arr))
print("数组的排序",np.sort(arr))#不能用arr.sort()
print(arr[arr>5]) #数组中大于5的元素

#6.保存和导入
np.save('arr',arr)
arr=np.load('arr.npy')
print(arr)

课后练习:创建4*4随机数组,只保留10以内的数,并计算出所有元素的和

import numpy as np
np.random.seed(12344) #设置随机种子,保证每次运行结果相同
print(np.random.rand()) #生成0到1之间的随机数
arr=np.random.randint(0,100,16).reshape(4,4) #生成0到100之间的16个随机数,并reshape成4*4的数组
print(arr[arr<=10])
print("数组的和",np.sum(arr[arr<=10]))

表格处理pandas

import pandas as pd
df = pd.read_excel("天气数据2024.xlsx", sheet_name="天气记录", engine="openpyxl")
print(df.head(10))
print(type(df))

image-20250119200750581

data={'日期':['2024-01-01','2024-01-02','2024-01-03'],'天气':['晴','多云','阴']}
datadf=pd.DataFrame(data)
print(datadf)

image-20250119200900633

#基础信息
print(df.head()) #查看数据前几行
print(df.info()) #查看数据类型

image-20250119201018206

#缺失值处理
print(df.head(10))
df=df.dropna()
print(df.head(10))
df['温度(℃)']=df['温度(℃)'].astype(int) #将温度列转换为整数类型
print(df.info())

image-20250119201138397

#选择和过滤
df_1=df[df['温度(℃)']>20]
print(df_1.head())
print(df_1.info())
print(df['风速(m/s)'].std())
lb=df['风速(m/s)'].mean()-3*df['风速(m/s)'].std()
ub=df['风速(m/s)'].mean()+3*df['风速(m/s)'].std()
print(df[(df['风速(m/s)']>=lb)&(df['风速(m/s)']<=ub)])

image-20250119202017751

课后练习:自己创建一个dataframe, 姓名 身高 体重 成绩 ,输出成绩第一名和平均分,以及低于60分的同学名字

import pandas as pd
import numpy as np
data={'姓名':['张三','李四','王五','赵六','孙七'],
     '身高':[170 for i in range(5)],
     '体重':[60,55,70,58,65],
     '成绩':list(np.random.randint(30,90,5))}
df=pd.DataFrame(data)
print(df)
print(df[df['成绩']==df['成绩'].max()])
print('平均分:',np.mean(df['成绩']))
newdf=df[df['成绩']<60]
print('低于60分的同学:',newdf['姓名'])

image-20250119213822858

可视化Matplotlib

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0,10,10) #生成0到10之间的10个数
print(x)
y=np.sin(x) #生成x的正弦值
plt.plot(x,y,linestyle='--',label='zhexian') #绘制x和y的图像
plt.title('y = sin(x)') #设置标题
plt.xlabel('x') #设置x轴标签
plt.ylabel('y') #设置y轴标签
plt.scatter(x,y,marker='*',c='r',label='sandian') #绘制散点图
plt.legend() #显示图例
plt.show() #显示图像

image-20250119174019208

fig,axes=plt.subplots(1,2) #创建一个1行2列的图像
axes[0].scatter(x,y,marker='*',c='r',label='sandian')
axes[0].set_xlabel('x') 
axes[0].set_ylabel('y') 
axes[0].set_title('shujudian')
axes[1].plot(x,y,linestyle='--',label='zhexian') 
axes[1].set_xlabel('x') 
axes[1].set_ylabel('y')
axes[1].set_title('nihejieguo')
fig.legend()
fig.show()

image-20250119180150187

练习

使用二分法解超越方程 e^x=pi的解

import numpy as np

def f(x):
   return np.e**x-np.pi

res=1e-6

def binary_search(a,b):
   while b-a>res:
       mid=(a+b)/2
       if f(mid)>0:
           b=mid
       else:
           a=mid
   print('方程的根为:',np.log(np.pi))
   print('二分法找到的解',mid)

binary_search(0,10)

方程的根为: 1.1447298858494002
二分法找到的解 1.1447304487228394

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇