տվյալների ներմուծում և ստուգում, բացակայող արժեքներ, սյունակների և տողերի գործողություններ և այլն

Python-ը տվյալների գիտության մեջ տարածված լեզու է և, իհարկե, արտադրության մեջ մեքենայական ուսուցման ամենատարածված լեզուն:

Այնուամենայնիվ, եթե նայեք տվյալների գիտության, վերլուծության և բիզնես ինտելեկտի ամբողջ լանդշաֆտին արդյունաբերության և գիտության ոլորտներում, դուք կհասկանաք, որ Python-ի համար նոր գործիքներով և տեխնիկայով զարգանալու հնարավորություններ կան:

Որպես օրինակ, ժամանակային շարքերի վերլուծությունը հսկայական առաջընթաց է գրանցել R միջավայրում: Եվ դա պայմանավորված է հարուստ գրադարաններով մուտքի ցածր խոչընդոտի պատճառով, ինչպիսիք են fpp2-ը: Python-ը դեռ հայտնի է ժամանակային շարքերի որոշ ոլորտներում, բայց դեռ երկար ճանապարհ պետք է անցնել fpp2 համարժեքի կանխատեսման ասպարեզում:

Նախ, այն պահանջում է ավելի ու ավելի շատ պրակտիկանտներ, ովքեր հետաքրքրված են Python-ում տվյալների գիտությամբ զբաղվելով: Սկսնակների համար ամենակարևորը մուտքի ցածր խոչընդոտի ապահովումն է:

Այս հոդվածի նպատակն է խոսել Python pandasի օգտակարության մասին՝ տվյալների վերլուծության համար ձեր միջավայրը ստեղծելու համար: Սա փորձ է ցույց տալու, թե ինչպես կարող են միայն մի քանի հրամաններ սովորել ավելի առաջադեմ մոդելավորման համար:

Ի՞նչ է պանդաները:

pandas-ը Python-ում տվյալների արդյունահանման հզոր, ճկուն և հասանելի գրադարան է: Այն ի սկզբանե մշակվել է ֆինանսական կառավարման ընկերությունում: Ֆինանսական ոլորտին ծանոթ յուրաքանչյուրը գիտի, որ դրա տվյալների գիտությունը իրականում ժամանակային շարքերի վերլուծություն է:

Իրականում, Pandas անունը առաջացել է panel data-ից, որը ժամանակային շարքի տվյալների հատուկ տեսակ է, որն օգտագործվում է էկոնոմետրիկայի մեջ: Եթե ​​դուք հետաքրքրված եք էկոնոմետրիկությամբ և տվյալների գիտության մեջ դրա կիրառմամբ, ստուգեք սա.



Պանդաներ տվյալների վեճի համար

Տվյալների գիտնականներն իրենց ժամանակի մեծ մասը (ոմանք կասեն՝ 80%) ծախսում են վիճաբանության և վերլուծության համար տվյալների պատրաստման վրա: Քանի որ pandas-ը նախագծվել է հատուկ վերլուծական խողովակաշարի այս հատվածին համապատասխանելու համար, եթե գիտեք, թե ինչպես է այն աշխատում և ինչպես լավագույնս օգտագործել այն տվյալների պատրաստման համար, մնացածը հեշտ է:

Այսպիսով, ահա վերլուծական խողովակաշարը տվյալների վերլուծությանը պատրաստ դարձնելու համար՝ հիմնական վերլուծությունից մինչև առաջադեմ մոդելավորում:

Տվյալների ներմուծում

Բիզնեսի առաջին կարգը, իհարկե, pandas գրադարանի տեղադրումն է:

import pandas as pd

Այժմ դուք կարող եք ներմուծել տվյալներ տարբեր աղբյուրներից: Դա կարող է լինել ֆայլ ձեր համակարգչից, տեքստ համացանցից կամ SQL տվյալների բազայի հարցումով:

Տվյալները նաև գալիս են տարբեր ձևաչափերով, ինչպիսիք են csv, excel, json և այլն:

Այսպիսով, իմանալով, թե որտեղից ներմուծել և որ ձևաչափով է այն, կորոշվի, թե ինչ հրամաններ օգտագործել: Ահա մի քանի օրինակ.

# improt a csv from the local machine or from the web
df = pd.read_csv("Your-Data-Path.csv")
# importing an excel file from the computer
df = pd.read_excel("Your-Data-Path.xlsx")

Տվյալների ստուգում

Տվյալների ներմուծումից հետո դուք ցանկանում եք ստուգել մի քանի բաներ, ինչպիսիք են տվյալների կառուցվածքը, տողերի և սյունակների քանակը, եզակի արժեքները, NaN արժեքները և այլն:

# description of index, entries, columns, data types, memory info
df.info()
# know the number of rows and columns
df.shape
# check out first few rows
df.head()
# if too many columns, list all of them
df.columns
# number of unique values of a column
df["column_name"].nunique()
# show all unique values of ONE column
df["column_name"].unique()
# number of unique values in ALL columns altogether
df.columns.nunique()

Բացակայող արժեքներ

Տվյալների հավաքածուում բացակայող արժեքներ ունենալը չպետք է զարմանա: Նախ, դուք պետք է ստուգեք, թե արդյոք կան բացակայող արժեքներ.

# checking out number of missing values in each column
df.isnull().sum()
# number of missing values as a percentage of total observations
df.isnull().sum()*100/len(df)

Այժմ, երբ հայտնաբերեք, որ բացակայող արժեքներ կան, մի քանի բան կարող եք անել՝ թողնել բաց թողնված արժեքային տողերը, թողնել մի ամբողջ սյունակ, փոխարինել արժեքները՝ կախված ձեր վերլուծական/մոդելավորման կարիքներից: Ահա մի քանի հիմնական հրամաններ.

# drop all rows containing null
df.dropna()
# fill na values with strings
df.fillna("data missing")
# fill na values with mean of columns
df.fillna(df.mean())

Ես մի ամբողջ հոդված գրեցի բացակայող արժեքների հետ գործ ունենալու մասին, եթե ցանկանում եք ստուգել.



Սյունակի գործողություններ

Սյունակի գործողություններ ասելով ես նկատի ունեմ մի քանի բաներից մեկը՝ սյունակներ ընտրելը, սյունակները թողնելը, անվանափոխելը, նորերը ավելացնելը, տեսակավորումը և այլն: Ընդլայնված վերլուծության մեջ դուք կարող եք ստեղծել նոր սյունակ, որը հաշվարկվում է գոյություն ունեցող սյունակների հիման վրա (օրինակ՝ ստեղծելով «տարիքի» հիման վրա: գոյություն ունեցող «ծննդյան_ամսաթիվ» սյունակում):

# select a column by name
df["column_name"]
# select multiple columns by column name
df[["column_name1", "column_name2"]] # notice the double brackets
# select first 3 columns based on column locations
df.iloc[:, 0:4]
# select columns 1, 2, 5
df.iloc[:, [1, 2, 5]]
# drop a column
df.drop("column_name", axis = 1)
# create a list of all columns in a dataframe
df.columns.tolist()
# rename a column
df.rename(columns = {"old_name": "new_name"})
# create a new column by multiplying an old column by 2
df["new_column_name"] = df["existing_column"] * 2
# sorting a column value in an ascending order
df.sort_values(by = "column_name", ascending = True)

Շարքի գործողություններ

Սյունակների մասին հոգալուց հետո, հաջորդ տողերը: Դուք պետք է աշխատեք տողերի հետ մի շարք պատճառներով, հատկապես տվյալների զտման կամ կտրատման համար: Բացի այդ, դուք կարող եք ավելացնել նոր դիտարկումներ ձեր տվյալների շրջանակում կամ հեռացնել որոշ գոյություն ունեցողները: Ստորև բերված են մի քանի հրամաններ, որոնք անհրաժեշտ են տվյալների զտման համար.

# select rows 3 to 10
df.iloc[3:10, ]
# select 3 to 10 rows AND columns 2 to 4
df.iloc[3:10, 2:5]
# take a random sample of 10 rows 
df.sample(10)
# select rows with specific string
df[df["colum_name"].isin(["Batman"])]
# conditional filtering: filter rows with >5 
df.query("column_name > 5")

Հատուկ դեպք. ժամանակային շարքերի տվյալների պատրաստում

Ժամանակային շարքերը այլ տեսակի օբյեկտ են, ոչ թե ցանկացած տվյալների շրջանակի: Հում տվյալները սովորաբար ձևաչափված չեն ժամանակային շարքերի վերլուծության համար, ուստի pandas գրադարանը դրանք վերաբերվում է որպես սովորական տվյալների շրջանակ, որտեղ ժամանակի չափումը պահվում է որպես տողեր, այլ ոչ թե datetime օբյեկտ: Այսպիսով, դուք պետք է փոխակերպեք սովորական տվյալների շրջանակը ժամանակային շարքի օբյեկտի:

# convert Date column to a datetime object
df["Date"] = pd.to_datetime(df["Date"])
# set Date as the index
df = df.set_index("Date")
# add new columns by splitting index
df["Year"] = df.idex.year
df["Month"] = df.index.month
df["Weekday"] = df.index.weekday_name

Ժամանակային շարքերի տվյալների պատրաստման մասին ավելին կարող եք գտնել դրա մասին հոդված.



Վերջնական խոսք

Յուրաքանչյուր ոք սկսում է իր տվյալների գիտության ճանապարհորդությունը տարբեր ելակետերից: Այնուամենայնիվ, ըմբռնման մակարդակը և նպատակին հասնելու համար պահանջվող ժամանակը զգալիորեն տարբերվում են, քանի որ յուրաքանչյուրը սովորում է տարբեր ճանապարհով: Տվյալների վիճաբանության հիմունքները սովորելու համար Python-ի օգտագործումը չպետք է դժվար լինի, եթե ինչ-որ մեկը հետևում է ուսուցման տրամաբանական գործընթացին: Այս հոդվածում ես ուրվագծեցի այդ տրամաբանական կարգը՝ տվյալների ներմուծում, ստուգում, բացակայող արժեքներ, սյունակների գործողություններ, տողերի գործողություններ՝ որոշ առավել հաճախ օգտագործվող հրամաններով: Հուսով եմ, որ դա օգտակար էր ձեր տվյալների գիտության ճամփորդության մեջ: