반응형

이런 데이터가 CSV파일로 저장되어 있다고 할 때,

 

1. 인코딩이 부분이 없을 경우 에러가 발생 가능합니다. 우리나라에서 작성하였다면 아래와 같이 코드를 추가하던지,

아니면 CSV의 인코딩을 수정해서 저장하던지 해야 에러가 발생하지 않습니다..

 

2. pandas를 이용해서 필터링 할 때에는 df['칼럼']='조건' 으로만 해서는 True/False만 표시하기 때문에,

df 안에서 해당 조건을 표시하면(아래 코드 확인) True/False를 기준으로 인덱싱 된 결과를 볼 수 있습니다.

 

3. head와 tail은 기본적으로 앞/뒤 5개의 데이터를 보여주지만,

내부에 숫자를 넣으면 해당 갯수만큼 출력해줍니다.

import pandas as pd


df = pd.read_csv('test.csv', encoding='euc-kr')

print(df.head(2))
print('\n')
print(df[df['이름']=='맹구'])
반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxPython Grid에 pandas dataframe 출력하기  (0) 2020.06.23
wxpython GridBagSizer 예제  (0) 2020.06.21
wxpython 폴더 트리 컨트롤  (0) 2020.06.18
wxpython 간단한 트리  (0) 2020.06.17
wxpython 폴더 트리  (0) 2020.06.16
반응형
import wx
import wx.grid as gridlib
import os


class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="FlexGridSizer Example")
        self.SetSize(1020, 600)

        self.mainPanel = wx.Panel(self)
        self.vtBoxSizer = wx.BoxSizer(wx.HORIZONTAL)  # 전체 레이아웃
        self.fgridSizer1 = wx.FlexGridSizer(rows=2, cols=1, hgap=5, vgap=5)  # 좌측 레이아웃
        self.fgridSizer2 = wx.FlexGridSizer(rows=2, cols=1, hgap=5, vgap=5)  # 중앙 레이아웃
        self.hrboxSizer = wx.BoxSizer(wx.HORIZONTAL)                         # 중앙 상단세부 레이아웃

        # 좌측: 1번 소스 드라이브, 2번 소스 트리
        self.SrcDir = wx.GenericDirCtrl(self.mainPanel, -1,
                                        size=(250, 450),
                                        dir='C:/',
                                        style=wx.DIRCTRL_SHOW_FILTERS |
                                              wx.DIRCTRL_3D_INTERNAL |
                                              wx.DIRCTRL_MULTIPLE)
        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelect)
        self.SrcList = wx.TextCtrl(self.mainPanel, style=wx.TE_MULTILINE)

        self.fgridSizer1.Add(self.SrcDir, 1, wx.EXPAND)
        self.fgridSizer1.Add(self.SrcList, 1, wx.EXPAND)

        # 중앙 찾기 옵션 / search / save / 리스트 뷰

        self.radio1 = wx.RadioButton(self.mainPanel, -1, "파일명")
        self.radio2 = wx.RadioButton(self.mainPanel, -1, "자료명")
        self.radio3 = wx.RadioButton(self.mainPanel, -1, "자료세부")
        self.findButton = wx.Button(self.mainPanel, -1, "search")
        self.saveButton = wx.Button(self.mainPanel, -1, "save")
        self.hrboxSizer.Add(self.radio1, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.radio2, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.radio3, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.findButton, 1, wx.EXPAND)
        self.hrboxSizer.Add(self.saveButton, 1, wx.EXPAND)

        self.Bind(wx.EVT_BUTTON, self.OnSearch, self.findButton)

        self.dataGrid = gridlib.Grid(self.mainPanel, wx.EXPAND)
        self.dataGrid.CreateGrid(50, 6)

        self.fgridSizer2.Add(self.hrboxSizer, 1, wx.ALIGN_CENTRE_HORIZONTAL|wx.EXPAND)
        self.fgridSizer2.Add(self.dataGrid, 1, wx.EXPAND|wx.ALL)


        # 좌/중/우 결합
        self.vtBoxSizer.Add(self.fgridSizer1, 0, wx.RIGHT | wx.EXPAND)
        self.vtBoxSizer.Add((20,20))
        self.vtBoxSizer.Add(self.fgridSizer2, 1, wx.EXPAND)

        # 사이즈 변경 조절
        self.fgridSizer1.AddGrowableRow(1)
        self.fgridSizer1.AddGrowableCol(0)
        self.fgridSizer2.AddGrowableRow(1)
        self.fgridSizer2.AddGrowableCol(0)

        self.mainPanel.SetSizer(self.vtBoxSizer)

    def OnSelect(self, e):
        items = os.listdir(self.SrcDir.GetPath())

        self.SrcList.Clear()

        for item in items:
            self.SrcList.AppendText(item + '\n')

    def OnSearch(self, e):
        if self.radio1.Value == True:
            print(self.dataGrid.GetNumberRows())
            #for i in range(0, 10, 1):
            #    print(self.dataGrid.GetCellValue(i, 0))


if __name__ == "__main__":
    app = wx.App()
    frm = MyFrame()
    frm.Show()
    app.MainLoop()

 

반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxpython GridBagSizer 예제  (0) 2020.06.21
pandas CSV파일 읽기 - 인코딩 에러  (0) 2020.06.21
wxpython 간단한 트리  (0) 2020.06.17
wxpython 폴더 트리  (0) 2020.06.16
wxpython 간단한 메뉴  (0) 2020.06.16
반응형
import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="TreeCtrl example")
        self.SetSize(420, 320)
        self.mainPanel = wx.Panel(self)
        self.expandButton = wx.Button(self.mainPanel, label = "Expand")

        self.tree = wx.TreeCtrl(self.mainPanel)
        root = self.tree.AddRoot('태조')
        self.tree.AppendItem(root, '방우')
        self.tree.AppendItem(root, '정종(방과)')
        self.tree.AppendItem(root, '방의')
        self.tree.AppendItem(root, '방간')
        taejong = self.tree.AppendItem(root, '태종(방원)')
        self.tree.AppendItem(root, '방연')

        self.tree.AppendItem(taejong, '양녕')
        self.tree.AppendItem(taejong, '효령')
        self.tree.AppendItem(taejong, '세종(충녕)')
        self.tree.AppendItem(taejong, '효령')

        self.staticText = wx.StaticText(self.mainPanel, style=wx.ALIGN_CENTER)

        self.vtBoxSizer = wx.BoxSizer(wx.VERTICAL)
        self.vtBoxSizer.Add(self.expandButton, 0, wx.EXPAND|wx.ALL, 5)
        self.vtBoxSizer.Add(self.tree, 5, wx.EXPAND|wx.ALL, 5)
        self.vtBoxSizer.Add(self.staticText, 0, wx.EXPAND|wx.ALL, 5)
        self.mainPanel.SetSizer(self.vtBoxSizer)

        self.Bind(wx.EVT_BUTTON, self.OnExpandButton, self.expandButton)
        self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnNodeSelected, self.tree)

    def OnExpandButton(self, e):
        self.tree.ExpandAll()

    def OnNodeSelected(self, e):
        selected = self.tree.GetSelection()
        self.staticText.SetLabel(self.tree.GetItemText(selected))
        self.mainPanel.Layout()

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()

    app.MainLoop()


 

반응형

'Programming > Python_Etc' 카테고리의 다른 글

pandas CSV파일 읽기 - 인코딩 에러  (0) 2020.06.21
wxpython 폴더 트리 컨트롤  (0) 2020.06.18
wxpython 폴더 트리  (0) 2020.06.16
wxpython 간단한 메뉴  (0) 2020.06.16
wxpython 간단한 프레임 예제(FlexGridSizer)  (0) 2020.06.16
반응형
import wx

class TestFrame(wx.Frame):
    def __init__(self, parent):
        wx.Frame.__init__(self, parent, -1, 'test', size=(500,700))

        dir3 = wx.GenericDirCtrl(self, -1, 
                        dir='C:/Television',
                                 style=wx.DIRCTRL_SHOW_FILTERS |
                                       wx.DIRCTRL_3D_INTERNAL |
                                       wx.DIRCTRL_MULTIPLE,
                                 filter="Python files (*.py)|*.py")

app = wx.App()

frm = TestFrame(None)
frm.Show()
app.MainLoop()

반응형
반응형
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Menu Example")

        self.menuBar = wx.MenuBar()
        fileMenu = wx.Menu()
        fileNewMenu = fileMenu.Append(wx.ID_ANY, "새 파일")
        fileOpenMenu = fileMenu.Append(wx.ID_ANY, "열기")
        fileMenu.AppendSeparator()
        fileExitMenu = fileMenu.Append(wx.ID_ANY, "끝내기")

        customMenu = wx.Menu()
        customHelloMenu = customMenu.Append(wx.ID_ANY, "&Hello",)

        self.menuBar.Append(fileMenu, "&File")
        self.menuBar.Append(customMenu, "&Test")
        self.SetMenuBar(self.menuBar)

        self.Bind(wx.EVT_MENU, self.OnNew, fileNewMenu)
        self.Bind(wx.EVT_MENU, self.OnOpen, fileOpenMenu)
        self.Bind(wx.EVT_MENU, self.OnExit, fileExitMenu)
        self.Bind(wx.EVT_MENU, self.OnHello, customHelloMenu)

    def OnNew(self, e):
        wx.MessageBox("OnNew() Clicked!")

    def OnOpen(self, e):
        wx.MessageBox("OnOpen() Clicked!")

    def OnExit(self, e):
        self.Close()

    def OnHello(self, e):
        wx.MessageBox("Hello.")

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()

    app.MainLoop()

반응형
반응형
import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="FlexGridSizer Example")
        self.SetSize(400, 370)
        self.mainPanel = wx.Panel(self)

        self.fgridSizer = wx.FlexGridSizer(rows=3, cols=2, hgap=5, vgap=5)

        self.staticName = wx.StaticText(self.mainPanel, label= "name :")
        self.staticEmail = wx.StaticText(self.mainPanel, label = "email :")
        self.staticPhone = wx.StaticText(self.mainPanel, label = "phone :")

        self.textName = wx.TextCtrl(self.mainPanel)
        self.textEmail = wx.TextCtrl(self.mainPanel)
        self.textPhone = wx.TextCtrl(self.mainPanel)

        self.fgridSizer.Add(self.staticName)
        self.fgridSizer.Add(self.textName, 0, wx.EXPAND)
        self.fgridSizer.Add(self.staticEmail)
        self.fgridSizer.Add(self.textEmail, 0, wx.EXPAND)
        self.fgridSizer.Add(self.staticPhone)
        self.fgridSizer.Add(self.textPhone, 0, wx.EXPAND)

        self.fgridSizer.AddGrowableCol(1)
        self.fgridSizer.AddGrowableRow(2)

        self.vtBoxSizer = wx.BoxSizer(wx.VERTICAL)
        self.vtBoxSizer.Add(self.fgridSizer, 1, wx.EXPAND|wx.ALL, 5)
        self.mainPanel.SetSizer(self.vtBoxSizer)

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()

    app.MainLoop()

 

반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxpython 폴더 트리  (0) 2020.06.16
wxpython 간단한 메뉴  (0) 2020.06.16
wxpython 간단한 프레임 예제(BoxSizer)  (0) 2020.06.16
wxpython 간단한 프레임 예제  (0) 2020.06.16
Python - GUI에서 DB연결  (0) 2020.02.26
반응형
import wx


class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="BoxSizer Example")

        self.mainPanel = wx.Panel(self)
        self.upperPanel = wx.Panel(self.mainPanel)
        self.leftButton = wx.Button(self.upperPanel, label="Left")
        self.rightButton = wx.Button(self.upperPanel, label="Right")

        self.hzBoxSizer = wx.BoxSizer(wx.HORIZONTAL)
        self.hzBoxSizer.Add(self.leftButton)
        self.hzBoxSizer.Add(self.rightButton)
        self.upperPanel.SetSizer(self.hzBoxSizer)

        self.middleButton = wx.Button(self.mainPanel, label="Middle")
        self.lowerButton = wx.Button(self.mainPanel, label="Lower")

        self.vtBoxSizer = wx.BoxSizer(wx.VERTICAL)
        self.vtBoxSizer.Add(self.upperPanel, 0, wx.ALIGN_LEFT|wx.TOP|wx.LEFT, 5)
        self.vtBoxSizer.Add(self.middleButton, 1, wx.EXPAND|wx.ALL, 5)
        self.vtBoxSizer.Add(self.lowerButton, 0, wx.ALIGN_RIGHT|wx.RIGHT|wx.BOTTOM, 5)

        self.mainPanel.SetSizer(self.vtBoxSizer)

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()

    app.MainLoop()

반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxpython 간단한 메뉴  (0) 2020.06.16
wxpython 간단한 프레임 예제(FlexGridSizer)  (0) 2020.06.16
wxpython 간단한 프레임 예제  (0) 2020.06.16
Python - GUI에서 DB연결  (0) 2020.02.26
Python-Oracle연동  (0) 2020.02.25
반응형

 

간단한 윈도우 생성 후 마우스 버튼 클릭에 따라 색상 변하는 예제

import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, parent=None, title="Window Color")
        self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLButtonDown)
        self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRButtonDown)

    def OnMouseLButtonDown(self, event):
        self.SetBackgroundColour(wx.Colour(0, 0, 255, 0))
        self.Refresh()

    def OnMouseRButtonDown(self, event):
        self.SetBackgroundColour(wx.Colour(255, 0, 0, 0))
        self.Refresh()

if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    
    app.MainLoop()

반응형

'Programming > Python_Etc' 카테고리의 다른 글

wxpython 간단한 프레임 예제(FlexGridSizer)  (0) 2020.06.16
wxpython 간단한 프레임 예제(BoxSizer)  (0) 2020.06.16
Python - GUI에서 DB연결  (0) 2020.02.26
Python-Oracle연동  (0) 2020.02.25
Python GUI - tkinter 예제  (2) 2020.02.25

+ Recent posts