Tulojen laskenta ja piirteiden muodostaminen
Laskekaa rivikohtaiset tulot, luokaa kuukausi- ja vuosineljännessarakkeet ja lisätkää alennusilmaisin kynnysarvon ylittäville tilauksille.
Tulojen laskenta ja piirteiden muodostaminen on ilmainen Pandas & NumPy Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Pandas & NumPy Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Rivikohtaisen liikevaihdon laskeminen
Myyntiaineiston perustavanlaatuisin laskelma on rivikohtainen liikevaihto: kunkin rivin määrän ja yksikköhinnan tulo. Luo sarake vektorisoidulla kertolaskulla, jolloin NumPy käsittelee kaikki rivit samanaikaisesti ilman Python-silmukkaa. Tämä sarake toimii kaikkien analyysin aggregointien perustana.
import pandas as pd
df = pd.read_parquet('sales_clean.parquet')
df['revenue'] = df['quantity'] * df['unit_price']
print(df[['quantity', 'unit_price', 'revenue']].head())Kuukausi- ja vuosineljännessarakkeiden poimiminen
Ryhmittely kalenterijaksojen mukaan on olennaista trendianalyysissä. Käytä datetime-sarakkeen .dt-aksessoria vuoden, kuukauden ja vuosineljänneksen poimimiseen. Kun tallennat nämä erillisiin kokonaislukusarakkeisiin, groupby-operaatiot nopeutuvat ja suodattaminen jakson mukaan onnistuu helposti ilman toistuvaa merkkijonojen jäsentämistä.
df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month
df['quarter'] = df['order_date'].dt.quarter
df['year_month'] = df['order_date'].dt.to_period('M')
print(df[['order_date', 'year', 'month', 'quarter', 'year_month']].head())Alennuslipun luominen
Liiketoimintasäännöissä määritellään usein alennuslippu: tietyn raja-arvon ylittävät tilaukset saavat alennuksen. Luo tämä binäärinen sarake tehokkaasti käyttämällä np.where-funktiota tai totuusarvovertailua. Alennuslipun avulla analyytikot voivat verrata alennettujen ja normaalihintaisten tilausten liikevaihtojakaumia yhdellä groupby-kutsulla.
import numpy as np
DISCOUNT_THRESHOLD = 500
df['is_discounted'] = np.where(df['revenue'] >= DISCOUNT_THRESHOLD, 1, 0)
print(df['is_discounted'].value_counts())
print(df.groupby('is_discounted')['revenue'].mean())Kateprosenttisarakkeen laskeminen
Jos aineisto sisältää cost_price-sarakkeen, voit laskea katteen kaavalla (unit_price - cost_price) / unit_price. Rajaa mahdolliset data-virheiden aiheuttamat negatiiviset katteet ennen jatkoanalyysiä käyttämällä komentoa clip(lower=0). Katetuottosarakkeiden avulla voit tehdä voittoon keskittyviä groupby-aggregointeja liikevaihdon rinnalla.
df['margin'] = ((df['unit_price'] - df['cost_price']) / df['unit_price']).clip(lower=0)
print(df[['unit_price', 'cost_price', 'margin']].describe())Ensimmäisestä tilauksesta kuluneiden päivien piirre
Päiviä asiakkaan ensimmäisen tilauksen ja nykyisen tilauksen välillä on hyödyllinen asiakassuhteen keston piirre. Laske se ryhmittelemällä customer_id-sarakkeen mukaan, määrittämällä kohorttipäiväksi pienin päivämäärä ja vähentämällä se kunkin rivin päivämäärästä. Timedelta-laskenta palauttaa timedelta64-arvoja sisältävän sarakkeen, jonka muunnat kokonaisluvuiksi päivien avulla käyttämällä .dt.days-ominaisuutta.
first_order = df.groupby('customer_id')['order_date'].transform('min')
df['days_since_first_order'] = (df['order_date'] - first_order).dt.days
print(df[['customer_id', 'order_date', 'days_since_first_order']].head())Tilauskoon luokittelu pd.cut-funktiolla
Jaa revenue-sarake nimettyihin kokoluokkiin käyttämällä pd.cut()-funktiota, jotta saat segmentointia varten järjestysasteikon piirteen. Määritä eksplisiittiset bins- ja labels-arvot, jotka vastaavat liiketoiminnassa määriteltyjä pieniä, keskisuuria ja suuria tilauksia. Tuloksena oleva sarake on Pandasin Categorical-tyyppiä, joten sen ryhmittely on tehokasta.
bins = [0, 100, 500, 2000, float('inf')]
labels = ['Small', 'Medium', 'Large', 'Enterprise']
df['order_size'] = pd.cut(df['revenue'], bins=bins, labels=labels)
print(df['order_size'].value_counts())Kumulatiivinen liikevaihto ajan kuluessa
Järjestä DataFrame order_date-sarakkeen mukaan ja seuraa liikevaihdon kertymistä vuoden aikana käyttämällä liikevaihtosarakkeeseen cumsum()-funktiota. Tämän kumulatiivisen sarjan avulla on helppo havaita, kasvaako liikevaihto lineaarisesti, kiihtyykö kasvu vai tasaantuuko se. Se toimii myös pohjana vesiputous- tai kumulatiiviselle viivakaaviolle.
df_sorted = df.sort_values('order_date')
df_sorted['cumulative_revenue'] = df_sorted['revenue'].cumsum()
print(df_sorted[['order_date', 'revenue', 'cumulative_revenue']].tail())Viikonloppu- ja arkipäiväpiirre
Ominaisuus dt.day_of_week palauttaa arvot 0 (maanantai) – 6 (sunnuntai). Merkitse lauantait (5) ja sunnuntait (6) viikonlopputilauksiksi, jotta voit selvittää, eroavatko viikonlopun ostokäyttäytyminen ja arkipäivien ostokäyttäytyminen toisistaan. Tämä on yleinen piirre vähittäiskaupan EDA:ssa ja A/B-testien analysoinnissa.
df['is_weekend'] = df['order_date'].dt.day_of_week >= 5
print(df.groupby('is_weekend')['revenue'].agg(['mean', 'count']))Asiakkaiden järjestäminen liikevaihdon mukaan
Tunnista tärkeimmät asiakkaasi laskemalla kunkin customer_id-arvon kokonaisliikevaihto komennolla groupby().sum() ja järjestämällä tulokset komennolla .rank(ascending=False, method='dense'). Kun lisäät järjestyssijan takaisin pää-DataFrameen map()-funktion avulla, voit suodattaa N tärkeimpään asiakkaaseen yhdellä totuusarvoehdolla.
customer_revenue = df.groupby('customer_id')['revenue'].sum()
customer_rank = customer_revenue.rank(ascending=False, method='dense').astype(int)
df['customer_revenue_rank'] = df['customer_id'].map(customer_rank)
print(df[df['customer_revenue_rank'] <= 10][['customer_id', 'customer_revenue_rank']].drop_duplicates())Liikevaihdon normalisointi z-pisteiksi
Normalisoi revenue-sarake z-pisteiksi, jotta voit verrata tilausten kokoja eri tuoteryhmien välillä, vaikka niiden hintavaihtelut poikkeaisivat suuresti toisistaan. Käytä kaavaa (df['revenue'] - df['revenue'].mean()) / df['revenue'].std(). Arvot, jotka ovat yli 3:n tai alle -3:n, ovat tilastollisia poikkeamia, jotka kannattaa tutkia ennen mallintamista.
mean_rev = df['revenue'].mean()
std_rev = df['revenue'].std()
df['revenue_zscore'] = (df['revenue'] - mean_rev) / std_rev
outliers = df[df['revenue_zscore'].abs() > 3]
print(f'Outlier orders: {len(outliers)}')Piirteillä rikastetun DataFramen tallentaminen
Kun olet lisännyt lasketut sarakkeet, tallenna rikastettu DataFrame, jotta kaikki seuraavat notebookit aloittavat samasta yhdenmukaisesta tilasta. Käytä to_parquet()-funktiota tietotyyppien säilyttämiseen, erityisesti kategorisen order_size-sarakkeen ja datetime-tyyppisen order_date-sarakkeen osalta. Dokumentoi uudet sarakkeet lyhyessä kommenttilohkossa skriptin alussa.
# New columns added:
# revenue, year, month, quarter, year_month
# is_discounted, order_size, is_weekend
# days_since_first_order, customer_revenue_rank, revenue_zscore
df.to_parquet('sales_features.parquet', index=False)
print('Feature DataFrame saved:', df.shape)Pikatarkistus
Testaa tämän oppitunnin data-analyysin käsitteiden ymmärtämistäsi.
Oppitunnin kertaus
Tässä oppitunnissa opit laskemaan liikevaihto- ja katetuottosarakkeita, poimimaan ajallisia piirteitä .dt-aksessorilla sekä muodostamaan piirteitä, kuten alennuslippuja, tilauskokoluokkia ja asiakasjärjestyksiä. Seuraavaksi tutustumme alue- ja kategoriakohtaiseen groupby-analyysiin.
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Tulojen laskenta ja piirteiden muodostaminen” ilmainen?
Kyllä – oppitunnin ”Tulojen laskenta ja piirteiden muodostaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Pandas & NumPy Academy-kurssin, päivitä CoddyKit PROhon. Pandas & NumPy Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Tulojen laskenta ja piirteiden muodostaminen”?
Laskekaa rivikohtaiset tulot, luokaa kuukausi- ja vuosineljännessarakkeet ja lisätkää alennusilmaisin kynnysarvon ylittäville tilauksille. Harjoittelet Pandas & NumPy Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Pandas & NumPy Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Pandas & NumPy Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Tulojen laskenta ja piirteiden muodostaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Pandas & NumPy Academy-oppitunnilla?
Kyllä. Jokainen Pandas & NumPy Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Myyntitietoaineiston lataaminen ja tarkistaminen
- Tulojen laskenta ja piirteiden muodostaminen
- Alue- ja kategoriakohtainen GroupBy-analyysi
- Kuukausittainen trendien visualisointi