有些雜亂,但是是數據分析方面python的基礎入門雌芽。邊學習邊總結做筆記,歡迎指正~爭取盡快出numpy和pandas的筆記供大家參考!
前言
IDE:集成開發(fā)環(huán)境 Anaconda
Idle:純python下的基本IDE曙博,交互式編譯器>>>
腳本試編譯器:.py文件 可以用Idle運行
CMD:直接運行.py / 在CMD中直接寫代碼
jupyternotebook:運行 ctrl+回車;插入 alt+回車怜瞒; 新增 shift+回車父泳;導出文件:download as
一、變量和數據類型
1. python標準數據類型:int float string字符串 list列表 tuple元組 dict字典
(1)string字符串有序不可變的列表
(2)list列表[]有序可變吴汪,列表中可以使字符惠窄、數字、列表和字典
(3)tuple元組()有序不可變
(4)dict字典{x:xx}無序可變
2. var = 10.5 int(var)=10 浮點型變整型不會四舍五入
3. 運算符:a/b除法? a%b取模漾橙,返回除法后的余數? a//b取整杆融,返回除法后的整數? a**b冪
比較運算符:=是賦值 ==是比較判斷 !=不等于
邏輯運算符:and且 or或 結果是True或False?bool()函數只有在0、None霜运、[]脾歇、''為False,其余都是True
二淘捡、序列
1. 序列:序列的索引指向值藕各,改變值就是改變索引的指向--可以通用與所有序列
(1)序列的連接:+ 序列的重復:*
(2)下標索引 :lst[0] 第一個值? lst[-1]最后一個值
(3)切片:lst[0:10]左閉右開? lst[:10]從頭開始? lst[10:]到尾結束? lst[::]從頭到尾??步長:lst[0:10:2]
(4)序列的內置函數 max min sum len lst.index(0)查找序列中0的索引位置 lst.count(6)查找序列中6存在幾個
2.列表list
(1)添加:name = ['小米','華為']??
print(name+['蘋果']) #生成新列表
add =[ '蘋果','梨']
name.append(add)#改變原有列表本身,把添加的值整體加入到列表中?['小米','華為',[?'蘋果','梨']]??
name.extend(add)#改變原有列表本身,把添加的值直接加入到列表中?['小米','華為','蘋果','梨']?
(2)刪除:lst.remove(5)#改變原有列表本身,刪除括號中值
del lst[2:4] 刪除相應索引
lst.clear()清除所有值
(3)插入:lst.insert(0,'a') #.insert(位置索引案淋,插入值)
(4)復制:x = list(range(10))
# m = x #m指向與x指向一樣座韵,所以x變m也變
m = x.copy() #x復制,m指向和x值相同但是是新的索引踢京,所以x變m不變
(5)排序:.sort()方法 lst.sort() #reserve倒序誉碴,默認正序False
lst3 = sorted(lst1) #sorted()函數:排序并復制函數,得到新的列表
(6)元組:是不可變的列表 切片瓣距、索引黔帕、步長和list一樣,但是不能del刪除某個蹈丸,可以直接刪除整體成黄,不能做元素的添加排序等
3.文本str:不可變序列
(1)轉義字符:\'輸出'? 、\n提行
(2)序列的通用功能都可以逻杖,字符串常用功能
st.replace(old,new,count-更換幾個)
st.split(',') #生成新的列表****
m.join(lst)#連接 字符串join奋岁,對象為列表,把lst中每個值用m連接
st.startswith('a'),st.endswith('a')判斷開頭和結尾,st.upper()#全部大寫荸百,st.lower()#全部小寫
st.swapcase()#大小寫互換闻伶,st.capitalize()#首字母大寫,st.isnumeric()是否全是數字够话,st.isalpha()#是否全是字母蓝翰,#刪除字符末尾的空格st.rstrip() 光绕,#刪除開投空格st.lstrip(),st.strip())#刪除開頭和結尾的空格畜份,st.replace(' ',''))#刪除所有空格
(3)格式化字符:
#%i整數 %s字符串 %f浮點型
print('小米成績?yōu)椋?i诞帐,小紅成績%i'%(70,90)) #多個替換變量后面要用元組方式
print('%.2f'%m)#.2f會四舍五入、print('%.0f'%m)#%i不會四舍五入爆雹、
(4)format格式化:
print('今天天氣怎么樣{}'.format(',非常好')) #{}里面是要替換的變量/值
print('我得工作是{work}'.format(work='ahkd'))
print('{}{}{}'.format('a','a','v'),'\n', '{0}{1}{0}'.format('as','ad','dda'))#{}是占位符
print('{:.1f}'.format(4.1723))#一位小數
print('{:%}'.format(4.2))#百分號
三停蕉、字典
1.字典key鍵,value值:直接用key做索引顶别,鍵值對需要成對出現(xiàn)谷徙,如果鍵出現(xiàn)多次,最后一次會被記籽币铩完慧;key必須是不可變對象(不能以列表作為key);dic1['a'] =100如果dic1中無key=a則為添加剩失,有則為更改a值屈尼;dic1.clear() #清空所有;del dic1 #刪除字典
2.申明字典
(1)dic = dict(m=10,n='aa',h=[1,2,3]) #dict()函數方法一
(2)lst3 = (('a',1),('b',2)) 或?lst3 = [('a',1),('b',2)] 或?[['a',1],['b',2]]
print(dict(lst3)) #dict()函數方法二
(3)內置函數:
dict.update()方法:更新/合并字典拴孤,把第二個字典合并到第一個字典脾歧,改變第一個字典,不會改變第二個字典;
print(len(dic1))#求字典長度
#列表字典格式演熟,每個字典是一條數據鞭执,數據之間用列表連在一起
print('a'in dic1) #可以用key判斷是否包含,不能用value判斷是否包含
(4)字典的元素訪問及遍歷
直接用key作為訪問芒粹,直接用key作為訪問
輸出所有key:poi.keys()兄纺,輸出所有value:poi.values(),輸出所有的元素key:value:poi.items()-#生成的是復合序列:第一個key化漆,第二個是value
四估脆、條件和判斷
1. if 、? if else座云、if elif else疙赠、or and 多條件判斷、for遍歷
2.循環(huán)控制語句:break continue
五朦拖、函數
eval()執(zhí)行表達式eval(1+2):3
exec("python語句")執(zhí)行python語句圃阳,以字符串形式
global 把局部變量變?yōu)槿肿兞?/p>
lambda作為匿名函數是不需要函數名的,主體是個表達式璧帝,而不是代碼塊:f = lambda a,b,c:a+b+c
(1)位置參數捍岳,即必選參數 def power(x):
(2)默認參數,調用時可變 def power(x,y=2):
(3)可變參數,傳入參數個數可變 為元組祟同,def power(*args):,
(4)關鍵字參數理疙,傳入參數為dict def power(**kw):
六晕城、模塊與包
1.自己創(chuàng)建的.py放進現(xiàn)有路徑中:
#方法一:查看現(xiàn)有包的路徑:import pandas print(pandas.__file__)
#方法二:直接添加路徑 import sys sys.path.append(r'/Users/xy/anaconda3/lib/python3.6/site-packages')
2.自己新建的py文件就是模塊,模塊里面的函數就是模塊的方法
3.#python標準模塊--random隨機數:import random
x = random.random() #生成0-1的隨機數 m = random.randint(0,10) #生成a-b區(qū)間的整數
lst = list(range(20)) s = random.choice(lst) #隨機取樣窖贤,按照索引選擇的所以里面的值必須是序列
sli = random.sample(lst,5)#隨機取指定的片段 random.shuffle(lst)#元素隨機打亂其本身
4.時間模塊time
time.sleep(0.1) #休息函數砖顷,按秒計算
time.ctime()#直接生成當地的時間,是個字符串
time.localtime()#當前時區(qū)的結構時間是個視圖 wday0-6表示周日-周六,yday表示1-366表示一年的第幾天
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())# a為字符串格式 b為時間戳一般用localtime
八赃梧、文件的讀寫
1.文件路徑的三種表達:
path1 = '\\Users\\xy\\anaconda3\\lib\\python3.6\\site-packages\\tmodel.txt' # 單個反斜杠:/
path2 = '/Users/xy/anaconda3/lib/python3.6/site-packages/tmodel.txt' # 兩個斜杠:\\(第一個\是轉義符)
path3 = r'\Users\xy/anaconda3\lib\python3.6\site-packages\tmodel.txt'? # r用于防止字符轉義
2.讀取文件r:
open(‘路徑’滤蝠,‘模式’,encoding=‘編碼’)有中文設置成utf-8授嘀,是ASIN的用gbk物咳,是uft-8的用utf8
print(f.read())
模式:r 讀取文件 默認;? w寫入? rw讀取?寫人蹄皱;? a追加
讀取方法:.read()讀取后光標會留在讀取末尾
f.seek(0)#把光標重新移動到某位置
f.close()#關閉文件鏈接览闰,無法讀取了
os.chdir('/:/:/')#改變路徑
print(f.read(10))#讀取前十個
print(f.readline())#讀取一行字符
print(f.readline(3))#讀取一行中前幾個字符
print(f.readlines())#讀取整個文件,一般用來遍歷
3.寫入方法:.write()為了有提行可以用for循環(huán)遍歷