Ugrás a fő tartalomra

Miért pont a python-t kezdjünk el tanulni



Trend diagram :stackoverflow.com


Sikeres (nagyok által is használt, támogatott) nyelv:


  Uber, Paypal, Google, Facebook, Instagram, NASA, Netflix, Dropbox, Reddit, MS azure,  stb.




Alap Python jellemzők:

 - Guido van Rossum Holland programozó találta ki 1989 karácsonyán
 - A nevét nem a hüllőről kapta, hanem a brit komédiasorozatról, a Monty Pythonról
 - Nem gyors, de könnyen bevethető, sok beépülő modul segít bennünket
 - A szkriptfileokat .py végződéssel szokás ellátni
 - Bytekódot generál és ezt futtatja
 - Futtatás közben el is menti .pyc végződésű filenévvel
 - Automatikusan generálja
 - Alapból interaktív interpreter
 - Változók értékeit kiírja ha hivatkozunk rá
 - Az értelmező szkriptfileokat futtat, és sorrol sorra halad...
 - Szöveg elemzés, ML (machine learning), azaz a gépi tanulás és a big data berobbanásával lehet vele nagyot alkotni





Írhatunk saját elemzést is  :  Link  az eredmény csv filebe lementve vizualizálhatjuk kedvünkre

Nézzünk szét a Github statisztikán itt is elég jól szerepel a python nyelv link2 







Python_az_ablakban.pdf


import time

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import sqlite3

 

# -------------------- SQLite

 

conn = sqlite3.connect(r"c:\Users\u23442\kl\sqlite\minta.db")

 

sqlite_alapok = '''

## Tábla létrehozás, ha még nem létezik

conn.execute("create table if not exists  user (name text, age integer)")

 

## Beírás kurzoron keresztül

c = conn.cursor()

c.execute("INSERT INTO user VALUES ('User A', 42)")

c.execute("INSERT INTO user VALUES ('User B', 43)")

 

## Csoportos beírás

L = [('abcd_dfj', 300),

     ('cfgd_dyfj', 400),

     ('sdd_dfjh', 305)]

conn.executemany("insert into user values (?, ?)", L)

 

## Véglegesítés

conn.commit()

 

c.execute("SELECT * FROM user")

print('KIIRAS : ',c.fetchall()) ## KIIRAS :  [('User A', 42), ('User B', 43)..

 

rows = c.execute("select * from user")

 

for row in rows:

    print('Nevek : ',row[0]),  ## Nevek :  cfgd_dyfj

 

for row in conn.execute("select * from user"):

    print('SOR : ',row)       ## SOR :  ('User A', 42)

'''

 

## Kapcsolat bezárása

conn.close()

 

# -----------------  Pandas

 

## pandas állományba írás

d = {'a': (1, 2, 101), 'b': (2, 2, 202), 'c': (3, 3, 303.123456789),'e': (3,2, 203),'f': (3, 3,103),'g': (2, 1,303)}

df=pd.DataFrame.from_dict(d, orient="index")

df.to_csv("data.csv")

 

## pandas állományból olvasás

# df = pd.read_csv("data.csv")

# d = df.to_dict()

print('Eredeti : ', df)

 

## mező átnevezés       / sql: select mezo as ujmezo

df.columns = ['col2',  'col3', 'col4']

print('Átnevezett : ', df)

 

## egyediek kiválasztása / sql: select distinct

np.unique(df['col2'])

print('Egyedi : ', np.unique(df['col2']))

 

## dátumtra alakítás   / sql: select CAST(col1 AS DATE) AS col2

print('Datumra alakítva : ', pd.to_datetime(df['col4']))

 

## tipzedes pontosság változtatása / select CAST(col1 AS DECIMAL(15,4))

df['col4'] = df['col4'].round(4)

print('Átnevezett : ', df)

 

## szűrés rekordsorszám és mező sorszám alapján

szurt = df.iloc[0:3, 0:1]  ## első három sor kiválasztása és csak a col2 oszlop

szurt.to_csv('my.output.csv', index = 0)  ## fejlécsor kihagyása kiíráskor

print('Szűrt : ', szurt)

 

## első pár sor  / sql:SELECT TOP 10

print('Csak az első három sor : ', df.head(3))

 

## csoportosított összeadás / sql: SELECT col1, col2 ,COUNT(*), agv(mezo)

print('összegzés : ',df.groupby(['col2']).agg({'col4':[np.size, np.mean]}))

## /sql: ROW_NUMBER() OVER (PARTITION BY col2, col3 ORDER BY col4 ASC) AS rn

df2 = df.assign(rn=df.sort_values(['col4'], ascending=True).groupby(['col2','col3']).cumcount() + 1)

print('Kiválasztási lista : ', df2)

 

 

## / sql: SELECT * FROM (SELECT t.*, ROW_NUMBER() OVER(PARTITION BY day ORDER BY total_bill DESC) AS rn WHERE rn < 3 ORDER BY day, rn;

df2 = df.assign(rn=df.sort_values(['col4'], ascending=False).groupby(['col3']).cumcount() + 1).query('rn < 3').sort_values(['col2','rn'])

print('Kiválasztási lista2 : ', df2)

 

## ---------------  sűrések

 

 

 

kl_segito = '''

/sql: UNION ALL            

pd.concat([df1, df2])

/sql: UNION       

pd.concat([df1, df2]).drop_duplicates()

'''

## %pwd

## %bookmark

 

st = ['foo', 'foobar', 'baz', 'qux','python', 'Guido Van Rossum'] * 10000

# print('st0 : ',st)          

 

kl_segito='''

## Minta keresés tartalmazás

%time st1 = [x for x in st if x.startswith('foo')]

%time st2 = [x for x in st if x[:3] == 'foo']

 

%timeit [x for x in st if x.startswith('foo')]

%timeit [x for x in st if x[:3] == 'foo']

#print('st1 : ',st1) 

#print('st2 : ',st2) 

 

#----

 

import some_lib

reload(some_lib)  ## megváltozott modul újra olvasása, friseb verzió betöltés kierőszakolása

 

'''

 

class Message:

   def __init__(self, msg):

       self.msg = msg

   def __repr__(self):

       return 'Visszamondom neked : %s' % self.msg

x = Message('Mond vissza, kérlek.')

print(x)

 

## ----- numpy

data = ([[ 0.9526, -0.246 , -0.8856],

[ 0.5639, 0.2379, 0.9104]])

data2= np.array(data)

 

print(data2.shape)

 

kl=np.empty((2, 3, 2))

print(kl)

 

kl = np.array([[1., 2., 3.], [4., 5., 6.]])

kl = kl*kl

print(kl)




Megjegyzések