python 小菜鳥筆記一

2021-09-10 09:23:37 字數 2945 閱讀 2564

#!/usr/bin/env python

# encoding: utf-8

import pyodbc

import pandas as pd

import numpy as np

sql="""

select 產品線,終端,品規,銷售模式

,cast(year([日期1]) as varchar(50))+right('00'+cast(month([日期1]) as nvarchar(50)),2)'年月'

,sum([醫院入庫數量])'數量'

,sum(iif([銷售模式]='自營',[商業發貨單價]*[醫院入庫數量]/10000,[底價]*[醫院入庫數量]/10000))'**'

from [商務部流向明細表] where [銷售模式]!='自營' or [銷售模式]!='小包' or [銷售模式]!='中包'

group by 產品線,終端,品規,year(日期1),month(日期1),銷售模式

"""conn = pyodbc.connect \

('driver=;server=apsoozrk6v8fk4x\mssqlserver12;database=流向;uid=sa;pwd=abcd2012')

df = pd.read_sql(sql,con=conn)

conn.close()

dd=pd.pivot_table(df,                                     #dataframe

index=['產品線','終端','品規'], #資料透檢視的行,y軸

values=['數量','**'], #資料透檢視的值,aggfunc的計算物件

columns=['年月'], #資料透檢視的列,x軸

aggfunc=[np.sum,np.mean], #對值的計算公式

fill_value=0, #缺失值預設為0

margins=true) #總計

"""

df.index #索引

df.values #值

df.columns #欄位名

df.t #轉置

df.head(6) #前6行

df.tail(6) #後6行

df.sort_values('數量',ascending=false) #按數量排序

df[2:9] #切片

df['czp']=df['產品線']+'-'+df['終端']+'-'+df['品規'] #新增一列合併「產品線終端品規」

df.set_index(['czp','年月'],inplace=true) #把列設定為索引,可以設定3個

del df['產品線'] #只能刪乙個 df.drop(df.columns[x], axis=1, inplace=true)

df.drop(df.columns[[0,1,2,3,4,5]], axis=1, inplace=true)

#刪除多列,從0計數,axis=1 對行索引操作,axis=0 對列索引操作

df.drop(columns=['b', 'c']) #刪除列

df.drop(index=[0, 1]) #刪除行

df.unstack(level=1) #按0,1,2的序號選第3個索引做行索引轉置

df.swaplevel('czp','年月') #層次索引由'czp','年月',變為'年月','czp'

#太長用『 \』分,空格+'\'

df.reset_index() #全部索引變成列 不改變原df

#df.reset_index(level=['tick', 'obs'])/df.reset_index(level=0, inplace=true)指定索引變成列

#切片#dh.ix[:6,:5] 被棄用

dh.iloc[:6,:5] #通過行號切片

dh.loc[:5,'產品線':'總**'] #通過標籤值切片

#查詢重複項

for i in dt['cc']:

count = 0

for j in dt['cc']:

if i==j:

count +=1

if count>1:

print(i,':',count)

else:

print('沒有重複項')

#修改dataframe列名

# ④暴力(好處:也可只修改特定的列)

df.rename(columns=('$a': 'a', '$b': 'b', '$c': 'c', '$d': 'd', '$e': 'e'}, inplace=true)

# ⑤修改

df.rename(columns=lambda x:x.replace('$',''), inplace=true)

#修改列名

df.rename(columns=,inplace=true)

df.columns.values.tolist() #檢視列名

#列名df['mon']=da2['年月']

df['num']=da2['sum']['數量']

df['rmb']=da2['sum']['**']

#畫圖df.plot(secondary_y=['rmb'])

plt.show()

"""

python小菜鳥入門

import os os.getcwd os.chdir os.getcwd name input micheal 接下來要執行的 部分需要首行縮排4位 官方標準,3位也能執行 當字串中包含 或者 的時候需要使用轉義字元,for instance i m ok 輸出就是 i m ok 其中 n表示換...

cocos小菜鳥學習筆記(2)

8 ccmoveto建立的兩個引數 float duration,const ccpoint position 第乙個引數為動作執行時間,第二個引數為移動目的座標 ccmoveby的引數 float duration,const ccpoint deltaposition 第乙個引數也是時間,但第二...

小菜鳥成長記

include define n 100 typedef struct book book int num 0,pnum int arrin book a,int pnum 輸入陣列元素,個數num由程式中自己確定。return i void arrout book a,int num 輸出陣列各元...