강의에서 하란대로 sql server express edition을 다운받아보았으나, 맥북이라 안됨 ^^
아래처럼 실습 환경 구축해서 진행함..

M2 맥북에서  AZURE SQL 실습환경 구축 (Data Studio+adventureworks.bak)

기본베이스는 https://learn.microsoft.com/ko-kr/sql/samples/adventureworks-install-configure?view=sql-server-ver16&tabs=data-studio#download-backup-files 이거 따라함 Azure Data Studio 설치하기 Azure SQL Server에서 [만들기] 눌러서

peanut159357.tistory.com

 

ㄴ or 를 대체해서 쓰는게 in / 100,200,300이 아닌경우 를 솎아낼때 쓰는용도로 유용 (실무에서 많이 쓰임)

 

-- LEFT(X1,X2) / RIGHT(X1,X2)
SELECT [ModifiedData] LEFT([ModifiedData,10]) AS D_DATE, RIGHT([ModifiedData,12]) AS D_TIME FROM [Sales][Customer]

문자열을 왼쪽에서 몇자까지만 보여주겠다 (왼쪽은 날짜만 나오게, 오른쪽은 시간만 나오게 조정 (as는 새로운 컬럼으로 만들어서 보여줌)

--SUBSTRING(x1,x2,x3) x1는 대상문자열, x2는 시작, x3은 종료
SELECT SUBSTRING('MS SQL DATABASE MANAGEMENT STUDIO',8,8) AS D_STRING

위에서 너무 기니까 LEFT+RIGHT를 합친게 SUBSTRING

-- len()
SELECT LEN([AccountNumber]) FROM [Sales].[Customer]
-- COLUMN별로 몇개 길이를 가지고 있는지 출력해준다
--REPLACE(x1,x2,x3) x1대사문자,x2지칭하는문자열, x3바꿔줄문자열
SELECT 'SQL IS SO DIFFICULT', REPLACE('SQL IS SO DIFFICULT', 'DIFFICULT','EASY') AS D_REP
-- SYSDATETIME(), GETDATE()
SELECT GETDATE() AS T_DATE
-- YEAR(X1), MONTH(X1), DAY(X1)
YEAR(GETDATE()) AS T_Y, MONTH(GETDATE()) AS T_M,DAY(GETDATE()) AS T_D
-- DATEPART(x1,x2)
DATEPART(YY.GETDATE()) AS T_Y, DATEPART(MM.GETDATE()) AS T_M, 
DATEPART(HH.GETDATE()) AS T_H, DATEPART(II.GETDATE()) AS T_I, DATEPART(SS.GETDATE()) AS T_S,

SELECT * FROM [Purchasing].[PurchaseOrderDetail] 
WHERE DATEPART(YY,ModifiedDate)=2014 AND  DATEPART(MM,ModifiedDate)=1
-- DATEDIFF(x1,x2,x3) 두개사이의 간격 구하는것
SELET DATEDIFF(YY, '2020-01-01', GETDATE()) AS D_Y
-- OUTPUT = 2
SELECT DATEDIFF(YY, BirthDate, GETDATE()) AS D_AGE FROM [HumanResource].[Employee]
-- 위의 예제는 직원들 나이구하는것
-- DATEADD(x1,x2,x3) x1대상, x2가 -3이면 3년을 뺴라는소리, x3은 now
SELECT DATEPART(W, DATEADD(DD,1000, '2020-01-01')) AS A_W 
-- 위에는 요일을 출력하라는 뜻으로 6이 출력됨 (월요일이 1)

<집계처리>

- STDEV 표준편차
- VAR 분산
- SUM 누적합계
- AVG 평균
- COUNT 총개수

SELECT VendorID, Count(VendorID) AS CC
FROM [Purchasing].[PurchaseOrderHeadr]
WHERE VendorID>=1500
GROUP BY VendorID
ORDER BY COUNT(VenderID) DESC
-- 순서에 유념
SELECT DATEPART(YY, OrderDate) AS A_Y, COUNT(DATEPART(YY, OrderDate)) AS CC
FROM [Purchasing].[PurchaseOrderHeader]
GROUP BY DATEPART(YY, OrderDate)
-- 년도만 보고, 년도별로 그룹핑해서 몇개인지 알아보려는 용도

-- SELECT Color, ListPrice FROM [Production].[Product]
-- WHERE Color IS NOT NULL
-- GROUP BY Color

SELECT Color, AVG(ListPrice) AS A_V FROM [Production].[Product]
WHERE Color IS NOT NULL
GROUP BY Color
HAVING AVG(ListPrice)>10

중요) 집계가 이뤄지고난 후에 값들은 having 을 통해 지정되어야함

IN-LINE VEIW

 

** 인라인 뷰
-- SELECT Color, AVG(ListPrice) AS A_V FROM [Production].[Product]
-- WHERE Color IS NOT NULL
-- GROUP BY Color
-- HAVING AVG(ListPrice)>10 
-- 이걸 아래 인라인뷰를 사용해서 똑같이 만들어보자

SELECT * FROM
(SELECT Color, AVG(ListPrice) AS A_V FROM [Production].[Product]
WHERE Color IS NOT NULL
GROUP BY Color) AS TEMP_T
WHERE A_V>10

SUBQEURY

 

OUTER JOIN

**인라인 사용

INNER JOIN

'<문법>' 카테고리의 다른 글

리눅스 명령어 목록  (0) 2021.04.17
  • 기본틀, 템플릿 다운받기

https://template-selector.ieee.org/secure/templateSelector/publicationType

  • Figure 가로 꽉차게
더보기
\begin{figure*}
    \centering
    \includegraphics[width=0.95\textwidth]{figures/architecture_overall_figure.pdf}
    \caption{example}
    \label{fig:architecture_overall_figure}
\end{figure*}
  • Figure 1/2 행
더보기
\begin{figure}
    \centering
    \includegraphics[width=0.45\textwidth]{figures/architecture_overall_figure.pdf}
    \caption{example}
    \label{fig:architecture_overall_figure}
\end{figure}
  • 한글사용
더보기
%한글사용을 위해 추가
\usepackage{kotex}
  • 표그리기
더보기
\begin{table}
    \def\arraystretch{1.05}
    \centering
    {\tiny
        \begin{tabular}{ |c||c|c|c|c|c|c|  }
         \hline
         \multicolumn{7}{|c|}{example} \\
         \hline
         hoho & 1 & 2 & 3 & 4 & 5 & 6\\
         \hline
         \hline
         name & a & a & a & a & a & a
         \\ %change base to boost clock
        \hline
         Compute capability  & d & a  & d & d & e & f \\
         Released Year & 2017 & 2019 & 2021 & 2017 & 2020 & 2021 \\
         \hline
        \end{tabular}
    \caption{example}
    \label{tab:example}
    }
\end{table}
  • section, subsection
더보기
\section{Introduction}\label{sec:introduction}

\subsection{model}\label{ch:model}
  • 점점이 리스트
더보기
\begin{itemize}
\item{점1}
\item{점2}
\item{점3}
\end{itemize}
  • 줄임말 주석처리
더보기
CC\footnote{Compute Capacity}
% 주석달기1
{\footnotesize \textsuperscript{1}CC: Compute Capacity}
% 주석달기2
\multicolumn{4}{l}{$^{\mathrm{1}}$Compute Capacity}
  • Reference
더보기
\bibliographystyle{unsrt} #reference 스타일
\bibliography{bibtex-share.bib} #reference해줄 bib파일
  • 한 figure에 vertical subfigure
더보기
\begin{figure}
    \centering
    \subfloat[Relative Latency per Model]{
        \includegraphics[width=0.45\textwidth]{figures/DRAMA_figure.pdf}
        \label{fig:DRAMA_figure}
    } % 이거진짜 중요한데 띄어쓰기 subfloat끼리 띄어쓰기안하면 vertical아니로 세로로 붙어서 에러남...
    %아마 띄우지않고 붙이면 한개의 figure로 취급하는거같음
    
    
    \subfloat[Relative Cost per Model]{
        \includegraphics[width=0.45\textwidth]{figures/DRAMA_luminol_figure.pdf}
        \label{fig:DRAMA_luminol_figure}
    }
    
    \subfloat[Relative Cost per Model]{
        \includegraphics[width=0.45\textwidth]{figures/DRAMA_savgol_figure.pdf}
        \label{fig:DRAMA_savgol_figure}
    }
\caption{example}
\label{fig:
  • Table안에서 줄바꿈
더보기
1. \newline
2. & \makecell[l]{SMACT \\   SMOCC} 이런식으로 셀1개안에 또 셀을 만들어줌

bash 문 실행할 파일이름을 start.sh 로 해서 생성해주기

import os
class TrainCallback(tf.keras.callbacks.Callback):
    def on_train_begin(self, logs=None):
        os.system("./start.sh &")
    def on_train_end(self, logs=None):
        os.system("mv start.txt " + file_name )
        os.system("pkill dcgmi") # start.sh 명령어 안에 dcgmi 가 있어서 dcgmi 포함하는것 강제종료..

파이썬에서 model.fit( 블라블라 )  이부분에서 아래 한줄 추가해주면 끝

callbacks = TrainCallback())

 

 

 

 

 

 

 

참조 :

https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/Callback#on_train_begin

https://stackoverflow.com/questions/5789642/how-to-send-controlc-from-a-bash-script

초기세팅

import pandas as pd
import glob
import pickle
import matplotlib.pyplot as plt

pd.set_option('display.max_columns', None) # dataframe 잘림없이 출력
pd.set_option('display.max_rows', None)
pd.set_option('display.max_seq_items', None) # 리스트 잘림없이 출력
pd.options.display.float_format = '{:.5f}'.format  # e, 지수없이 출력
pd.set_option('display.max_colwidth', -1) #pd로 볼때 ...없이 출력
import warnings # warning 무시
warnings.filterwarnings('ignore')
pd.set_option('mode.chained_assignment',  None) # SettingWithCopyWarning 경고끄기

 

< 행열 이름바꾸기 >

더보기

# 행이름/열이름 변경 (index,columns 통으로 변경)

# 행 인덱스, 열 이름 변경하기
df.index=['학생1', '학생2']
df.columns=['연령','남녀','소속']

 

# 행이름/열이름 원래있는걸 다른이름으로 바꿔주기 (index,columns 이미있는걸 변경)

# 열 이름을 변경한다
df.rename(columns={'연령':'나이', '남녀':'성별', '소속':'학교'}, inplace=True)
# 행 인덱스를 변경한다
df.rename(index={'학생1':'준서', '학생2':'예은'}, inplace=True)

<행열 삭제>

더보기

열삭제 

del df['A']

df.drop(["B", "C"], axis=1)
df.drop(columns=["B", "C"],inplace=True)
df.pop("A") # A열만 반환해준다음,df확인해보면 A 빠져있을것

 

행삭제

df = df.drop(index=0, axis=0)
df = df.drop(index=[0, 1, 2], axis=0)
new_iris = iris.drop([1,2])
df.drop(["B", "C"], axis=0)

# 특정문자(save_fig2리스트에저장) 가 포함된 열 삭제
for i in save_fig2:
    print(i)
    df2 = df2[df2.columns.drop(list(df2.filter(regex=i)))]

<행열 타입 바꾸기>

더보기
df = df.astype({'시가':'int'}) # 특정열만 바꿔주기

<판다스 오름차순>

더보기
df['a'].sort_values()   # 작은수부터
df['a'].sort_values(ascending=False)   # 큰수부터

# 이건 해당 열에 맞춰서 모든 dataframe순서바꿈 / 큰수부터
per_model = per_model.sort_values(by=["noclust"], ascending=[False])

<데이터프레임 저장/불러오기>

더보기
# 저장
df.to_csv('./df.csv')
# 불러오기
df = pd.read_csv('./Data.csv')

<데이터프레임 잘리는거없이 전부 출력>

더보기
import warnings #dataframe 전체다출력
warnings.filterwarnings('ignore')
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

<리스트 잘리는거없이 모두 출력 - dataframe columns너무많을때 잘림>

더보기
pd.set_option('display.max_seq_items', None)  # 리스트 잘리는거없이 전부 출력
df.columns

<데이터프레임 생성(컬럼,인덱스 지정)>

더보기
Data_T = pd.DataFrame(index = list(index_list),columns = list(columns_list))

<아래 행추가>

더보기
Total_latency.loc[len(Total_latency)] = [column1_value, column2_value]

< untilied:0 없이 / 저장한 포맷그대로 열기>

더보기
epoch_latency = pd.read_csv('epoch_latency.csv',index_col = 0)

< 얕은 복사>

더보기
import copy
b = copy.copy(a)

< index 재정렬 >

더보기
  df = df.reset_index(drop=True)

<특정열 제외하고 보기>

더보기
DATA[DATA.columns.difference(['Target_Instance', 'Target_latency'])].head()

< 특정행 제거>

더보기
gojung2 = gojung.drop(['CLOUD','GPU TYPE'])

 

<데이터프레임 type 바꾸기>

더보기
df.astype('float')

< 데이터프레임 오른쪽에 붙이기>

더보기
new = pd.concat([a, b],axis=1)

< 데이터프레임 아래에 붙이기>

더보기
pd.concat([df1, df2], axis = 0)

< replace >

더보기
df.replace(0, 5)  # 0을 5로 바꿔주기

 

 

< 원핫인코딩 >

더보기
pd.get_dummies(data['Embarked'])

 

< 쥬피터 동시에 여러개 실행 >

더보기
from multiprocessing import Pool
if __name__ == '__main__':
    with Pool(len(devide_3000)+1) as p:
        p.map(MADE_HN, devide_3000)
def MADE_HN(N):
	블라블라

< 리스트 차집합, 뺼셈 >

더보기
complement = list(set(lst1) - set(lst2))

< 얕은 복사 >

더보기
CROSS_column_DATA_scaled = CROSS_column_DATA.copy()

< 리눅스 파일복사>

더보기
cp -r /tf/Yoonseo/Github/DCGMI/dcgm/a100 /tf/Yoonseo/Github/DCGMI2/DATA/
# cp -r 복사할파일 복사해줄위치

< 상관관계 3가지 >

더보기
corr_kendall_DATA_NEW = DATA_NEW.corr(method="kendall")  # kendall pearson spearman
spearman_DATA_NEW = DATA_NEW.corr(method="spearman")  # kendall pearson spearman
pearson_DATA_NEW = DATA_NEW.corr(method="pearson")  # kendall pearson spearman

< 보기편하게 모아서 보기 >

더보기
show_data.groupby(['train','instance']).first()

< 피클파일 열기 >

더보기
with open('../DATA/raw-data/exp09/g5.xlarge/times-EC2-128-InceptionV3.pickle', 'rb') as f: df = pickle.load(f)

< 교집합 >

더보기
intersection = list(set(lst1) & set(lst2))

< 특정문자 포함 파일 지우기>

더보기
sudo rm -f *.csv

<여러개파일 zip>

더보기

 

zip zipfile.zip 파일1 파일2 파일3

< 행값 합 구하기 >

더보기
df.sum(axis=1)

< time >

더보기
start = time.time()
math.factorial(100000)
end = time.time()

print(f"{end - start:.5f} sec")

< Lambda 예제 >

더보기
# lambda 매개변수 : 표현식
# map(함수, 리스트)
# reduce(함수, 시퀀스)
# filter(함수, 리스트)

##################################################
>>> (lambda x,y: x + y)(10, 20)
30
>>> plus_ten = lambda x: x + 10
>>> plus_ten(1)
11
##################################################
>>> list(map(lambda x: x ** 2, range(5)))    
[0, 1, 4, 9, 16]
##################################################
>>> from functools import reduce   
>>> reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
10
>>> reduce(lambda x, y: y + x, 'abcde')
'edcba'
##################################################
>>> list(filter(lambda x: x < 5, range(10))) 
[0, 1, 2, 3, 4]
>>> list(filter(lambda x: x % 2, range(10)))  
[1, 3, 5, 7, 9]
# 4을 2로 나눈 나머지는 0, 0은 '거짓'이니까 버려짐.
##################################################
>>> test = 'A, B, C, D'
>>> result = test.split(',')
>>> result
['A', ' B', ' C', ' D']
##################################################
>>> test = 'A, B, C, D'
>>> result = list(map(lambda x : x.strip(), test.split(',')))
>>> result
['A', 'B', 'C', 'D']

< 특정문자열 포함 파일찾기 >

더보기
grep -r [문자열] [찾으려는위치]
# ex) grep -r 112 ./*

< plt.plot 폰트 >

더보기
import matplotlib.pyplot as plt 
plt.figure(figsize=(16, 5))    # figure가로세로크기
plt.rc('font', size=20)        # 기본 폰트 크기
plt.rc('axes', labelsize=20)   # x,y축 label 폰트 크기
plt.rc('xtick', labelsize=50)  # x축 눈금 폰트 크기 
plt.rc('ytick', labelsize=20)  # y축 눈금 폰트 크기
plt.rc('legend', fontsize=20)  # 범례 폰트 크기
plt.rc('figure', titlesize=50) # figure title 폰트 크기

plt.rcParams['legend.fontsize'] = 16
plt.rcParams['figure.titlesize'] = 18
plt.rcParams['axes.titlesize'] = 18
plt.rcParams['lines.linewidth'] = 2.0
plt.rcParams['axes.labelsize'] = 18
plt.rcParams['xtick.labelsize'] = 16
plt.rcParams['ytick.labelsize'] = 16

< ipynb -> py >

더보기
# 확장자가 ipynb인 Jupyter Notebook 파일을 아래 명령어를 이용하여 python 파일로 변환. 아래 명령은 xgboost-wine-quality.ipynb 파일을 step0-xgboost-wine-quality.py 로 변환하는 예시.
jupyter nbconvert xgboost-wine-quality.ipynb --to script --output step0-xgboost-wine-qual

< 행추가 > 

더보기
latency_all.loc['best_gpu'] =  [0 for i in range(len(latency_all.columns))]

<>

+++

<특정문자가 문자열안에 포함되어있는지>

더보기
    check_models = ['MNIST_CNN','AlexNet','CIFAR10','InceptionV3',
                     'VGG19','ResNet50','InceptionResNetV2','LeNet5',
                   'ResNetSmall']
    for i in (check_models):
        if i in save_name:
            model = i

 

 

#include<vector>

vector<int> v;     // 비어있는 벡터 생성
vector<int>v = { 1, 2, 3};

 

  • v.front();  //첫번째 원소
  • v.back(); // 마지막 원소
  • v[idx];  // idx 번쨰 원소를 참조
  • v.push_back(10) // 맨뒤에 10추가
  • v.pop_back(); // 마지막값 제거
  • v.size() // 원소갯수
  • v.insert(2, 3); // 2의 위치에 3을 넣기

 

참조 : https://blockdmask.tistory.com/70

 

'<문법> > C++' 카테고리의 다른 글

맥북에서 초간단 C++ 컴파일&실행  (0) 2022.01.06

foo.cpp 파일을 생성

make foo
# 에러나면 sudo make clean
./foo

 

출처 :https://stackoverflow.com/questions/221185/how-to-compile-and-run-c-c-in-a-unix-console-mac-terminal

 

'<문법> > C++' 카테고리의 다른 글

C++ Vector 초간단 내용  (0) 2022.01.07

참조 : https://stackoverflow.com/questions/11328958/save-multiple-plots-in-a-single-pdf-file

 

Save multiple plots in a single PDF file

plotting module def plotGraph(X,Y): fignum = random.randint(0,sys.maxint) plt.figure(fignum) ### Plotting arrangements ### return fignum main module import matplotlib.pyplot as plt...

stackoverflow.com

 

with PdfPages('multipage_pdf.pdf') as pdf:
  # 그래프1 
  plt.figure(figsize=(3, 3))
  plt.plot(range(7), [0,1,2,3,4,5,6], 'r-o')
  plt.title('graph one')
  pdf.savefig()  # saves the current figure into a pdf page

  # 그래프2
  plt.figure(figsize=(3, 3))
  plt.plot(range(7), [0,1,2,3,4,5,6], 'r-o')
  plt.title('graph two')
  pdf.savefig()  # saves the current figure into a pdf page
  # plt.close() 그래프 출력안할거면 사용

<그래프 두개로 그리기>

- 안 붙은 그래프

바그래프 가로길이 0.36 반띵하면0.18

i 를 x축 중심 이라고 하면 바1은 -0.18 ,바2는 +0.18 해서 두 그래프가 딱붙어서 출력

x= [ i-0.20 for i in range(7)]
x2= [ i+0.20 for i in range(7)]
x_middle= [ i for i in range(7)]

plt.bar(x, original,color='darkgray',width=0.36,label='label1', edgecolor='black')
plt.bar(x2, (a+b+c+d)/4 ,color='white',width=0.36,label='lable2',edgecolor='black',hatch='/')

- 붙은 그래프

바그래프 가로길이 0.36 반띵하면 .018

i 를 x축 중심 이라고 하면 바1은 -0.20 ,바2는 +0.20 해서 두 그래프두개 0.4 띄워서  출력

x= [ i-0.18 for i in range(7)]
x2= [ i+0.18 for i in range(7)]
x_middle= [ i for i in range(7)]

plt.bar(x, original,color='darkgray',width=0.36,label='label1', edgecolor='black')
plt.bar(x2, (a+b+c+d)/4 ,color='white',width=0.36,label='lable2',edgecolor='black',hatch='/')

 

<화살표 그리기>

- 바가 7개면 7번 for 문돌려주고

- plt.arrow ( 시작하는점x, 시작하는점 y , 시작점에서 x축방향으로 이동할만큼, 시작점에서 y축방향으로 이동할만큼  )

- head_width (화살표머리 가로) , head_length(화살표머리 세로) 

- fc, ec : 화살표머리랑 화살표대 색깔 

- width : 화살표대 넓이 (설정안하면 실선)

for i in range(7):
    plt.arrow(i+0.20, original[i], 0, -((original-(a+b+c+d)/4))[i]+0.8, head_width = 0.18, 
             head_length = 0.8,fc="k", ec="k",width=.06)
plt.show

<라벨달기>

- 바그래프안에 label = 'label1' 이런식으로 라벨달아주고

plt.bar(x, original,color='darkgray',width=0.36,label='label1', edgecolor='black')
plt.bar(x2, (a+b+c+d)/4 ,color='white',width=0.36,label='lable2',edgecolor='black',hatch='/',yerr=[(0,0,0,0,0,0,0),(original-(a+b+c+d)/4)] ,error_kw=dict(lw=2, capsize=0, capthick=2))

- 바그래프에 달아준 라벨을 표시해준다.

loc ( 그래프안에서 x , 그래프안에서 y )

plt.legend(fontsize=62,loc=(0.005,0.86))

 

<바그래프 칠하기,선긋기,테두리선>           

- edgecolor :바 테두리선 색 (안해주면 색없음)

- inewidth : 바 테두리선 두께

-  hatch : 빗금  ('/' , '//', '\\' 'x' ...)

- color : 바안에 칠하기 (검색ㄱ)

plt.bar(x, original,color='darkgray',width=0.36,label='label1', edgecolor='black',linewidth=0.5)
plt.bar(x2, (a+b+c+d)/4 ,color='white',width=0.36,label='lable2',edgecolor='black',linewidth=0.5,hatch='/',yerr=[(0,0,0,0,0,0,0),(original-(a+b+c+d)/4)] )

 

<x 축 돌리기>

- rotation = 95 (수직으로)

- rotation=0 (안돌림)

plt.xticks(x_middle,['a','b','c','d','e','f','g'])
plt.xticks(rotation=90,fontsize=80,ha="right")
# ha는 오른쪽을 기준으로 맞추라는뜻

 

<바그래프 위에 텍스트 표시>

o= ['%','%','%','%','%','%','%']
for i, v in enumerate(x2):
    plt.text(v, original[i], str (round(((original-(a+b+c+d)/4)/original*100)[i],1))+o[i] ,                 
             fontsize = 60, 
             color='black',
             #weight="bold",
             horizontalalignment='center',
             verticalalignment='bottom')

 

<바그래프 사이에 간격 표시하기>

- yerr=[(0,0,0,0,0,0,0), 간격 ] ,error_kw=dict(lw=2, capsize=3, capthick=2))

- capsize : 가로축 길이 (0으로 하면 걍 실선으로 표시됨)

- capthick : 가로축 두께

plt.bar(x, original,color='darkgray',width=0.36,label='label1', edgecolor='black')
plt.bar(x2, (a+b+c+d)/4 ,color='white',width=0.36,label='lable2',edgecolor='black',hatch='/',yerr=[(0,0,0,0,0,0,0),(original-(a+b+c+d)/4)] ,error_kw=dict(lw=2, capsize=0, capthick=2))

- yerr=[1,1,1,1,1,1,1] 로 바꾸면

<바그래프 x 축 rotation 위치 조정하기>

https://stackoverflow.com/questions/43152502/how-can-i-rotate-xticklabels-in-matplotlib-so-that-the-spacing-between-each-xtic  참조

 

<텍스트파일 생성후 저장>

[학번@linux-pplab ~]$ cat << END > file.txt

> Hello!

> My job is student.

> Good bye.

> END

[학번@linux-pplab ~]$ cat file.txt

혹은 touch 파일이름

 

 

<파일삭제>

>rm 파일이름

**sudo rm-rf / 포맷수준 삭제

rm -r home/     #디렉토리 삭제

 

<작성하던 텍스트파일 나가기>

vim/ vi로 파일열기~~~

Esc + shift키 + ;키

 

 q (그냥나가기)변경사항없을떄

Wq(저장후나가기)

 q! 변경사항무시하고 그냥 나가기(저장x) 이렇게해줘야 다음에들어갈떄 안물어봄

 

 

<파일수정>

i 수정

i ->ctrl->dd 한줄삭제

 

<ls>

ls-al은 ls-a이랑 ls-l를 동시에 사용하기위한 명령어

ls -a 는 숨김파일도 보여주는 -a

ls -l은 https://www.leafcats.com/137     ,

http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/ls참조

 

ls-h -h는 스위치옵션이라고 kb/mb/gb 단위로 쉽게 파일사이즈 확인이 가능

 

<디렉터리, 파일생성>

mkdir dir

ls -ld dir

rm file1.txt.    # 파일삭제

'<문법>' 카테고리의 다른 글

SQL 정리 (기초탄탄, SQL 톺아보기 (입문과정))  (2) 2024.09.18
fisrt_column
[A] B / C

위에 표를 아래처럼 바꾸려면

a b c
A B C

 

test['adelete'] = test.fisrt_column.str.split(']').str[0]  # ]기준으로 0(왼)1(오)이라는뜻
test['a'] = test.adelete.str.split('[').str[1]

test['change2'] = test.fisrt_column.str.split(']').str[1]

test['b'] = test.change2.str.split('/').str[0]
test['c'] = test.change2.str.split('/').str[1]

이렇게 나눠주고나서 

 

test['a'].str.strip()
test['b'].str.strip()
test['c'].str.strip()

왼쪽 오른쪽 빈칸을 없애준다.

 

test=test.replace(r'^\s*$', np.NAN, regex=True)
test = test.fillna(value='nul')

그리고 빈칸은 NAN(결측치값)으로 만들어준다음 nul값으로 채워준다.

 

 

'<문법> > 파이썬' 카테고리의 다른 글

[python] Saving multiple graphs as one pdf  (0) 2021.12.27
Matplotlib 바그래프 문법정리  (0) 2021.07.22
Pandas 열 한개 여러개로 쪼개기  (0) 2021.01.13
json 인코딩/디코딩 초간단정리  (0) 2021.01.13
Python 문법  (0) 2021.01.13

python -> json문자열 (json인코딩)

 

1. dumps    #dumps 파일을 쓰는게아니라 파일고대로 json->string으로 변환함 

jsonString = json.dumps(json.dumps(student_data, indent=4, sort_keys=True)

#intent=4는 들여쓰기 스페이스
#sort_keys=True 키를 기준으로 정렬해서 직렬화함

2. dump  #dump는 파일을 불러와서 그 파일안에 쓰기를함 (W)

import json
with open("student_file.json", "w") as json_file:

    json.dump(student_data, json_file)
    
# w 파일 쓰겠다/ dump로 직렬화!!!!
# student_file.json을 열어둔채로 dump로 직렬화하고 내보내고자하는 객체 student_data를 json_file에 써줌

 

 

json문자열 -> python (json 디코딩)

dict = json.loads(jsonString)

json파일을 dict로 변환~

ctrl + f 로 찾기

 

subprocess : 파이썬에서  명령을 실행할  있게 해주는 라이브러리

단순 서브프로세스 실행을 바란다면 call 함수 사용한다

>>> import subprocess
>>> subprocess.call(["ls", "-al"])

ls-al ls-a이랑 ls-l 동시에 사용하기위한 명령어

ls -a  숨김파일도 보여주는 -a

ls -l http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/ls 참조

drwx------  2 sbx_user1051  991 4.0K Oct  2 12:10 .
dr-xr-xr-x 21 root         root 4.0K Aug 31 10:28 ..
-rw-rw-r--  1 sbx_user1051  991 1.0M Oct  2 12:11 file

 

 

결과값을 문자열 데이터로 사용하고 싶을떄에는 check_output함수를 사용 , 결과값을 문자열데이터로 리턴해줌

>>> out = subprocess.check_output (['ls', '-al'] )
>>> out 
b'total 8\ndrwxr-xr-x. 2 root root 4096 10\xec\x9b\x94  8 17:58 .\ndrwxr-xr-x. 6 root root 4096 10\xec\x9b\x94  8 17:58 ..\n'

 

 

 

Popen

popen 생성자 : 프로세스를 시작

communicate 메서드: 자식 프로레스들이 일을 마치고 종료하기를 기다림.

 

 

Pipe ??

-r 명령어를 실행하면 명령어가 표준출력으로 출력한 문자열을 읽기위한 용도로 pipe open

w  명령어를 실행하고 키보드로 데이터를 입력해야하는 명령어에 사용함.  커맨드의 표준입력으로 데이터를 전송하기위한 pipe open

 

 

 

import asyncio

-> 비동기 프로그래밍을 위하 모듈이며 CPU작업과 I/O  병렬로 처리하게 해줌

****동기(Synchronout)처리는 특정 작업이 끝나면 다음 작업을 처리하는 순차처리 방식이고, 비동기처리는 여러작업을 처리하도록 예약한뒤 작업이 끝나면 결과를 받는 방식

import asyncio 
async def hello():    # async def로 네이티브 코루틴을 만듦    
	print('Hello, world!') loop = asyncio.get_event_loop()     # 이벤트 루프를 얻음
loop.run_until_complete(hello())    # hello가 끝날 때까지 기다림
loop.close()      #이벤트 루트를 닫음
#추가추가

loop = asyncio.get_event_loop()     # 이벤트 루프를 얻음
loop.run_until_complete(hello())    # hello가 끝날 때까지 기다림

os.urandom이라는 함수가 있다

- 이 함수는 원하는길이(byte) unsigned수치값을 만들어준다.

- 이것 암호화 알고리즘 키를 생성할떄 유용하다.

 

 

<파일 입출력>

https://wikidocs.net/16077

https://wikidocs.net/14130 

f = open('hello.txt', 'w')
f.write('안녕하세요\n')
f.close()

위처럼 일일히 close하기 귀찮으면 아래처럼 써서 자동으로 닫게하면 됨 

with open('hello.txt', 'w') as f:
    f.write('안녕하세요\n')

 

 

open(file, 'wb', buffering=byte_size)

wb 의미는? file대신 open 사용한다. 파이썬 2에서만 사용된다.

- wb 데이터를 저장하라는것 /rb 데이터를 읽으라는뜻

- buffering = 버퍼링끄기는 0(바이너리모드에서 버퍼링 미수행), 라인모드는1(텍스트모드에서 개행문자(\n)만날때까지 버퍼링), 고정크기로 보내려면 임의의 바이트수를 1보다 큰양의 수로 입력

-errors=None 텍스트모드시 에러처리

 

 

1) read() 파일전체의 내용을 하나의 문자열로 읽어온다.

2) readline() 한라인씩 읽음 (대용량파일을 읽어올경우 굉장히유용)

3) 바이너리 파일을 1바이트씩 읽어오는 방법은?

with open("myfile", "rb") as f:
    byte = f.read(1)
    while byte != "":
        # byte처리
        byte = f.read(1)

 

 

 

f.flush() -> 실제 파일이 기록되지만 파일을 닫지는않는다.

 

f.seek(0,2) ->파일끝에서 0바이트이동(파일 끝까지이동하라는뜻)\

f.seek(i) ->파일 시작에서 i바이트로 이동

ex)f.seek(0) =첫줄로 이동하라

f.seek(-(i+1),2) -> 파일끝에서 (i+1) 바이트 이전으로

 

randrange ->  import random이랑 같이씀 파이썬 랜덤함수중하나임

randrange(a,b) randrange(a) 두가지버전이있다.

randrange(b) 0<=x<b  범위내에서 랜덤한 정수 int 반환한다.

 

fsync -> 동기식 입출력함수

fd 지정된 파일과 관련된 모든 변경자료(데이터+메타데이터) 디스크와 동기화한다.

디스크 I/O 연산은 커널안의 버퍼캐시나 페이지 캐시를 거친다. 따라서 프로세스가 파일에 데이터를 기록하면 커널은  데이터를 커널의 버퍼들  ㅇ하나에 복사해서 내부적인 대기열에 등록해두고, 적당한 시점이 되면 디스크에 기록한다. 이렇게 대이터가 버퍼에만 있고 디스크에는 아직 기록되지않은 상태가   있다 이때 문제점은

1. 디스크에 순서대로 기록해야만하는경우 -> 커널 대기열에서는 성능개션에 적합하게 요청순서를 변경해서 문제가 발생

2. 시스템이 비정상적으로 종료될경우

이때 syn, fsync, fdatasync 함수를 이용한다.

 

for _ in range ():

a = [0 for _ in range(10)]
a = [0]*10
#두개가 같음

gzip

파이썬에서 압축된 파일내용을 바로 읽을 수있게 해주는 모듈

#압축하기
import gzip
path = './data/fruit.txt'
with open(path,'rb') as f_in:

    with gzip.open(path+'.gz','wb') as f_out:
        f_out.writelines(f_in)  # ./data/fruit.txt.gz 압축 파일 생성

https://wikidocs.net/8934

 

unittest

madplay.github.io/post/python-main-function

wikidocs.net/16107 참조

 

<리눅스 명령어>

rm-rf  삭제 리눅스 명령어

**sudo rm-rf / 포맷수준 삭제

 

<일치하는 string 찾기>

find , rfind 일치하는것찾기

- 일치하는것 앞에서 찾기 x.find

- 일치하는것 뒤에서 찾기 x.rfind

e.g result = json.loads(x[x.find('{'): x.find('}')+1])

+ Recent posts