DB에 현재 3일에 있는 데이터를 4일로 옮김
두자리일때는 substring을 6까지만 잘라줘야함
DB에 현재 3일에 있는 데이터를 4일로 옮김
두자리일때는 substring을 6까지만 잘라줘야함
2차원 리스트나 2차원 numpy array로 DataFrame을 만들 수 있습니다. 심지어 pandas Series를 담고 있는 리스트로도 DataFrame을 만들 수 있습니다.
따로 column과 row(index)에 대한 설정이 없으면 그냥 0, 1, 2, ... 순서로 값이 매겨집니다.
import numpy as np
import pandas as pd
two_dimensional_list = [['dongwook', 50, 86], ['sineui', 89, 31], ['ikjoong', 68, 91], ['yoonsoo', 88, 75]]
two_dimensional_array = np.array(two_dimensional_list)
list_of_series = [
pd.Series(['dongwook', 50, 86]),
pd.Series(['sineui', 89, 31]),
pd.Series(['ikjoong', 68, 91]),
pd.Series(['yoonsoo', 88, 75])
]
# 아래 셋은 모두 동일합니다
df1 = pd.DataFrame(two_dimensional_list)
df2 = pd.DataFrame(two_dimensional_array)
df3 = pd.DataFrame(list_of_series)
print(df1)
0 1 2
0 dongwook 50 86
1 sineui 89 31
2 ikjoong 68 91
3 yoonsoo 88 75
파이썬 사전(dictionary)으로도 DataFrame을 만들 수 있습니다.
사전의 key로는 column 이름을 쓰고, 그 column에 해당하는 리스트, numpy array, 혹은 pandas Series를 사전의 value로 넣어주면 됩니다.
import numpy as np
import pandas as pd
names = ['dongwook', 'sineui', 'ikjoong', 'yoonsoo']
english_scores = [50, 89, 68, 88]
math_scores = [86, 31, 91, 75]
dict1 = {
'name': names,
'english_score': english_scores,
'math_score': math_scores
}
dict2 = {
'name': np.array(names),
'english_score': np.array(english_scores),
'math_score': np.array(math_scores)
}
dict3 = {
'name': pd.Series(names),
'english_score': pd.Series(english_scores),
'math_score': pd.Series(math_scores)
}
# 아래 셋은 모두 동일합니다
df1 = pd.DataFrame(dict1)
df2 = pd.DataFrame(dict2)
df3 = pd.DataFrame(dict3)
print(df1)
name english_score math_score
0 dongwook 50 86
1 sineui 89 31
2 ikjoong 68 91
3 yoonsoo 88 75
리스트가 담긴 사전이 아니라, 사전이 담긴 리스트로도 DataFrame을 만들 수 있습니다.
import numpy as np
import pandas as pd
my_list = [
{'name': 'dongwook', 'english_score': 50, 'math_score': 86},
{'name': 'sineui', 'english_score': 89, 'math_score': 31},
{'name': 'ikjoong', 'english_score': 68, 'math_score': 91},
{'name': 'yoonsoo', 'english_score': 88, 'math_score': 75}
]
df = pd.DataFrame(my_list)
print(df)
english_score math_score name
0 50 86 dongwook
1 89 31 sineui
2 68 91 ikjoong
3 88 75 yoonsoo
그냥 Append 한다고끝이아니라
이렇게 직접 넣어줘야한다
self.sell_list = self.sell_list.append(pd.DataFrame([['22','151','sadsad']],columns=['date','sell_price','reason']))
예제
print("before sell_list %s" %self.sell_list)
self.sell_list = self.sell_list.append(pd.DataFrame([['22','151','sadsad']],columns=['date','sell_price','reason']))
print("after sell_list %s" % self.sell_list)
# self.sell_list = pd.DataFrame(['22','151','sadsad'],index=['date','sell_price','reason'])
# self.sell_list.append(pd.Series)
# self.sell_list.append(pd.DataFrame(['22','151','sadsad'],index=['date','sell_price','reason']))
print("0번째 인덱스 값 %s "%self.sell_list.iloc[0])
로컬저장소의 파일 새 프로젝트로 올리기
1. 프로젝트가 있는 디렉터리로 이동하기
2. 초기설정
$ git config --global user.email "gitlab이메일"
3. init하기
$ git init
4. remote 생성
ejdrma@gmail.com
https://gitlab.com/dooo3/(새로만들이름)
git remote add origin https://gitlab.com/userName/(만들고싶은 프로젝트 이름)
https:// 부분은 gitlab에서 HTTP를 복사하여 넣어줍니다
origin이란 이름의 remote를 생성합니다
5. 현재 디렉터리 add, commit
$ git commit - "init"
6. push
$ git push -u origin master
-u 옵션으로 origin master 로 push
https://beomseok95.tistory.com/132
해당 링크에 있는 게시물을 참조하였습니다
orthographic 카메라의 nearClipPlane 값을 조절하면 단면효과를 낼 수 있다.
예)
스크립트 :
class Parent():
#class 기초
#클래스는 구분하기위한 용도로 맨 앞글자는 대문자로 쓴다
class B_school():
def __init__(self):
print("B클래스 입니다")
self.student_name = "원빈"
class A_school():
def __init__(self):
print("A클래스 입니다")
bb = B_school()
self.student_name_a =bb.student_name;
print(self.student_name_a)
#B_school().stock()
A_school()
c#에서는 복잡한 이 기능이 python에서는 아주 단순하다.
ex
def english():
print("영어과 입니다")
def math(name,eng):
print("수학과 입니다.")
eng() ->해당받은 인자를 실행해준다
#3 - 함수의 인자로 함수 전달
math(name='원빈',eng=english)
수학과 입니다.영어과 입니다
잘못된 예
ex
def english():
print("영어과 입니다")
def math(name,eng):
print("수학과 입니다.")
eng() ->해당받은 인자를 실행해준다 # 에러발생
#3 - 함수의 인자로 함수 전달
math(name='원빈',eng=english()) =>이런식으로 여기서 실행해버리면 에러가 난다.
영어과 입니다수학과 입니다.Traceback (most recent call last):File "C:/Users/ejdrm/PycharmProjects/week1/basic/python.py", line 23, in <module>math(name='원빈',eng=english())File "C:/Users/ejdrm/PycharmProjects/week1/basic/python.py", line 19, in matheng()TypeError: 'NoneType' object is not callable
리스트 과제에서 외부 파이선을 실행해야하는 상황이 생겨서 해본것
%주의 -> 왠만한 에러는 콘솔창에 나오게 할수 있지만
나오지 않는 에러도 있으니 차근차근 디버깅 해야함(호출하는곳,실행되는곳)
실행되는 원본(파이썬)에서는 에러 없이 되지만 호출하여서 인자를 받아서 실행할때는 안될수도있다.
인자를 통하여 외부프로그램이 돌아가는지 하나씩 확인하여 디버깅하여야한다.
//호출부분
public void PythonStart(string key, string data, int TotalLen, string PATH_p)
{
var psi = new ProcessStartInfo();
Console.WriteLine("PATH_p:" + PATH_p);
Console.WriteLine("data:" + data);
//string psi_args = PATH_p + data; //경로를 지정한 실행파일
string[] dataitem = data.Split(' ');
dataitem[3] =dataitem[3].Replace("'", "");
dataitem[4] =dataitem[4].Replace("'", "");
dataitem[5] = dataitem[5].Replace("'", "");
string newresult = "";
for (int i = 0; i < dataitem.Length; i++)
{
newresult += dataitem[i]+" ";
}
string psi_args = PATH_p + newresult; //경로를 지정한 실행파일
//string psi_args = PATH_p + data; //경로를 지정한 실행파일
Console.WriteLine("psi_args:" + psi_args);
psi.FileName = @"C:\scheduler\rist_env\Scripts\python.exe"; //파이썬 가상환경 설치 경로
psi.Arguments = psi_args; //파일경로
//psi.Arguments = string.Format("\"{0}\"\"{1}\"", PATH_p, data);
//3) Proecss configuration
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.RedirectStandardOutput = true;
psi.RedirectStandardError = true;
//4) return value def
var errors = ""; // 출력은 하지 않습니다.
var results = "";
//using (var process = Process.Start(psi))
//using (var process = System.Diagnostics.Process.Start(psi))
using (var process = Process.Start(psi))
{
Console.WriteLine("프로세스 실행 하고 기다리기!!");
//process.WaitForExit();
results = process.StandardOutput.ReadToEnd();
errors = process.StandardError.ReadToEnd();
RxBox.AppendText("Error : " + errors + Environment.NewLine);
RxBox.AppendText("Result : " + results + Environment.NewLine);
//while (process.StandardOutput.Peek() > -1)
//{
// process.StandardOutput.Close();
// RxBox.AppendText("break!!!! process.StandardOutput.Peek()");
// break;
//}
//while (process.StandardError.Peek() > -1)
//{
// process.StandardError.Close();
// RxBox.AppendText("process.StandardError.Peek()");
// break;
//}
//using (StreamReader reader = process.StandardOutput)
//{
// results = reader.ReadToEnd();
// Console.WriteLine(results);
//}
//using (StreamReader reader = process.StandardError)
//{
// errors = reader.ReadToEnd();
// Console.WriteLine(errors);
//}
}
RxBox.AppendText("Error : " + errors + Environment.NewLine);
RxBox.AppendText("Result : " + results + Environment.NewLine);
}
//키받아서 외부로 보내는것 관리하는 함수
try
{
switch (key)
{
case "predict_schedule_to_db":
Console.WriteLine("predict_schedule_to_db 요청 들어옴");
//path = @"C:\scheduler\pzpy\rist\app\predict_schedule_to_db.py";
path = $"\"C:\\scheduler\\pzpy\\rist\\app\\predict_schedule_to_db.py\"";
Form1.instance.PythonStart(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
//Form1.instance.PythonTest(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
break;
case "verify_model":
Console.WriteLine("verify_model 요청 들어옴");
//path = @"C:\scheduler\pzpy\rist\app\verify_model.py";
path = $"\"C:\\scheduler\\pzpy\\rist\\app\\verify_model.py\"";
Form1.instance.PythonStart(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
//Form1.instance.PythonTest(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
break;
case "test_hubiz":
Console.WriteLine("test_hubiz 요청 들어옴");
path = $"\"C:\\scheduler\\pzpy\\rist\\app\\test_hubiz.py\"";
Form1.instance.PythonStart(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
//Form1.instance.PythonTest(key, value.Substring(1, value.Length - 1), e.RawData.Length, path);
break;
}
//맨앞에 공백 하나 제거
//Form1.instance.PythonTest(key, value.Substring(1, value.Length-1), e.RawData.Length, path);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}
문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...