නව දත්ත කට්ටලයක් සමඟ වැඩ කිරීමට පටන් ගන්නා විට පළමු පියවර වන්නේ එය තේරුම් ගැනීමයි. මෙය සිදු කිරීම සඳහා, ඔබට උදාහරණයක් ලෙස, විචල්යයන් විසින් පිළිගත් අගයන් පරාසයන්, ඒවායේ වර්ග සහ නැතිවූ අගයන් ගණන සොයා ගැනීමට අවශ්ය වේ.
ගවේෂණාත්මක දත්ත විශ්ලේෂණය (EDA) සිදු කිරීම සඳහා pandas පුස්තකාලය අපට බොහෝ ප්රයෝජනවත් මෙවලම් සපයයි. නමුත් ඔබ ඒවා භාවිතා කිරීමට පෙර, ඔබ සාමාන්යයෙන් df.describe() වැනි සාමාන්ය කාර්යයන් සමඟින් ආරම්භ කළ යුතුය. කෙසේ වෙතත්, එවැනි කාර්යයන් මගින් සපයනු ලබන හැකියාවන් සීමිත බව සැලකිල්ලට ගත යුතු අතර, EDA සිදු කිරීමේදී ඕනෑම දත්ත කට්ටලයක් සමඟ වැඩ කිරීමේ ආරම්භක අදියර බොහෝ විට එකිනෙකට සමාන වේ.
අද අප විසින් ප්රකාශයට පත් කරන ද්රව්යයේ කතුවරයා පවසන්නේ ඔහු පුනරාවර්තන ක්රියාවන්හි රසිකයෙක් නොවන බවයි. එහි ප්රතිඵලයක් ලෙස ගවේෂණාත්මක දත්ත විශ්ලේෂණය ඉක්මනින් හා කාර්යක්ෂමව සිදු කිරීමට මෙවලම් සෙවීමේදී ඔහු පුස්තකාලය සොයා ගත්තේය
මෙන්න අපි උදාහරණයක් ලෙස Titanic දත්ත කට්ටලය භාවිතා කරමින් pandas-profiling පුස්තකාලය භාවිතා කිරීමේ විශේෂාංග දෙස බලමු.
පැන්ඩා භාවිතා කරමින් ගවේෂණාත්මක දත්ත විශ්ලේෂණය
ටයිටැනික් දත්ත කට්ටලයේ ඇති විවිධ වර්ගයේ දත්ත සහ එහි නැතිවූ අගයන් නිසා එහි පැන්ඩා පැතිකඩ අත්හදා බැලීමට මම තීරණය කළෙමි. දත්ත තවමත් පිරිසිදු කර නොමැති අවස්ථාවන්හිදී pandas-profiling පුස්තකාලය විශේෂයෙන් රසවත් වන අතර එහි ලක්ෂණ අනුව තවදුරටත් සැකසීමට අවශ්ය බව මම විශ්වාස කරමි. එවැනි සැකසුම් සාර්ථකව සිදු කිරීම සඳහා, ඔබ ආරම්භ කළ යුත්තේ කොතැනින්ද සහ අවධානය යොමු කළ යුතු දේ දැනගත යුතුය. Pandas-profiling හැකියාවන් ප්රයෝජනවත් වන්නේ මෙහිදීය.
පළමුව, අපි දත්ත ආයාත කර විස්තරාත්මක සංඛ්යාලේඛන ලබා ගැනීමට pandas භාවිතා කරමු:
# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np
# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')
# вычисление показателей описательной статистики
df.describe()
මෙම කේත කොටස ක්රියාත්මක කිරීමෙන් පසු, පහත රූපයේ දැක්වෙන දේ ඔබට ලැබෙනු ඇත.
සම්මත පැන්ඩා මෙවලම් භාවිතයෙන් ලබාගත් විස්තරාත්මක සංඛ්යාලේඛන
මෙහි බොහෝ ප්රයෝජනවත් තොරතුරු තිබුණද, අධ්යයනයට ලක්ව ඇති දත්ත පිළිබඳව දැන ගැනීමට සිත්ගන්නා සෑම දෙයක්ම එහි අඩංගු නොවේ. උදාහරණයක් ලෙස, දත්ත රාමුවක, ව්යුහයක යැයි කෙනෙකුට උපකල්පනය කළ හැකිය DataFrame
, පේළි 891 ක් ඇත. මෙය පරීක්ෂා කිරීමට අවශ්ය නම්, රාමුවේ ප්රමාණය තීරණය කිරීම සඳහා තවත් කේතයක් අවශ්ය වේ. මෙම ගණනය කිරීම් විශේෂයෙන් සම්පත්-අධික නොවන අතර, ඒවා නිතරම පුනරුච්චාරණය කිරීම දත්ත පිරිසිදු කිරීමට වඩා හොඳින් වැය කළ හැකි කාලය නාස්ති කිරීමට බැඳී ඇත.
Pandas-profiling භාවිතයෙන් ගවේෂණාත්මක දත්ත විශ්ලේෂණය
දැන් අපි pandas-profiling භාවිතයෙන් එයම කරමු:
pandas_profiling.ProfileReport(df)
ඉහත කේත රේඛාව ක්රියාත්මක කිරීම ගවේෂණාත්මක දත්ත විශ්ලේෂණ දර්ශක සහිත වාර්තාවක් ජනනය කරනු ඇත. ඉහත පෙන්වා ඇති කේතය සොයාගත් දත්ත ප්රතිදානය කරනු ඇත, නමුත් ඔබට එය ඔබට යමෙකුට පෙන්විය හැකි HTML ගොනුවක් ප්රතිදානය කළ හැක, උදාහරණයක් ලෙස.
වාර්තාවේ පළමු කොටස දත්ත පිළිබඳ මූලික තොරතුරු (නිරීක්ෂණ ගණන, විචල්ය ගණන, ආදිය) ලබා දෙන දළ විවරණ අංශයක් අඩංගු වේ. විශේෂ අවධානය යොමු කළ යුතු දේවල් විශ්ලේෂකයාට දැනුම් දෙන ඇඟවීම් ලැයිස්තුවක් ද එහි අඩංගු වේ. මෙම ඇඟවීම් මඟින් ඔබට ඔබේ දත්ත පිරිසිදු කිරීමේ උත්සාහයන් යොමු කළ හැක්කේ කොතැනටද යන්න පිළිබඳ ඉඟි සැපයිය හැක.
දළ විශ්ලේෂණය වාර්තා අංශය
ගවේෂණාත්මක විචල්ය විශ්ලේෂණය
වාර්තාවේ දළ විවරණ කොටසට පහළින් ඔබට එක් එක් විචල්යයන් පිළිබඳ ප්රයෝජනවත් තොරතුරු සොයාගත හැකිය. ඒවාට වෙනත් දේ අතර, එක් එක් විචල්යයේ ව්යාප්තිය විස්තර කරන කුඩා ප්රස්ථාර ඇතුළත් වේ.
වයස් සංඛ්යා විචල්යය ගැන
පෙර උදාහරණයෙන් ඔබට පෙනෙන පරිදි, pandas-profiling මඟින් අපට ප්රයෝජනවත් දර්ශක කිහිපයක් ලබා දෙයි, නැතිවූ අගයන් ප්රතිශතය සහ සංඛ්යාව මෙන්ම අප දැනටමත් දැක ඇති විස්තරාත්මක සංඛ්යාලේඛන මිනුම් ද. නිසා Age
සංඛ්යාත්මක විචල්යයකි, එහි ව්යාප්තිය හිස්ටෝග්රෑම් ආකාරයෙන් දෘශ්යකරණය කිරීමෙන් අපට දකුණට ව්යාප්තියක් ඇති බව නිගමනය කිරීමට ඉඩ සලසයි.
වර්ගීකරණ විචල්යයක් සලකා බැලීමේදී, ප්රතිදාන ප්රතිඵල සංඛ්යාත්මක විචල්යයක් සඳහා සොයාගත් ඒවාට වඩා තරමක් වෙනස් වේ.
ලිංගික වර්ගීකරණ විචල්යය ගැන
එනම්, සාමාන්යය, අවම සහ උපරිමය සොයා ගැනීම වෙනුවට, pandas-profiling library විසින් පන්ති ගණන සොයා ගන්නා ලදී. නිසා Sex
— ද්විමය විචල්යයක්, එහි අගයන් පන්ති දෙකකින් නිරූපණය කෙරේ.
ඔබ මා කරන ආකාරයට කේතය පරීක්ෂා කිරීමට කැමති නම්, pandas-profiling පුස්තකාලය මෙම ප්රමිතික නිවැරදිව ගණනය කරන්නේ කෙසේද යන්න ගැන ඔබ උනන්දු විය හැකිය. පුස්තකාල කේතය විවෘතව පවතින අතර GitHub හි ඇති බැවින් මේ ගැන සොයා බැලීම එතරම් අපහසු නොවේ. මම මගේ ව්යාපෘති වල කළු පෙට්ටි භාවිතා කරන ලොකු රසිකයෙක් නොවන නිසා, මම පුස්තකාලයේ මූල කේතය බැලුවා. උදාහරණයක් ලෙස, ශ්රිතයෙන් නිරූපණය වන සංඛ්යාත්මක විචල්ය සැකසීමේ යාන්ත්රණය පෙනෙන්නේ මෙයයි
def describe_numeric_1d(series, **kwargs):
"""Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).
Also create histograms (mini an full) of its distribution.
Parameters
----------
series : Series
The variable to describe.
Returns
-------
Series
The description of the variable as a Series with index being stats keys.
"""
# Format a number as a percentage. For example 0.25 will be turned to 25%.
_percentile_format = "{:.0%}"
stats = dict()
stats['type'] = base.TYPE_NUM
stats['mean'] = series.mean()
stats['std'] = series.std()
stats['variance'] = series.var()
stats['min'] = series.min()
stats['max'] = series.max()
stats['range'] = stats['max'] - stats['min']
# To avoid to compute it several times
_series_no_na = series.dropna()
for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):
# The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098
stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)
stats['iqr'] = stats['75%'] - stats['25%']
stats['kurtosis'] = series.kurt()
stats['skewness'] = series.skew()
stats['sum'] = series.sum()
stats['mad'] = series.mad()
stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN
stats['n_zeros'] = (len(series) - np.count_nonzero(series))
stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)
# Histograms
stats['histogram'] = histogram(series, **kwargs)
stats['mini_histogram'] = mini_histogram(series, **kwargs)
return pd.Series(stats, name=series.name)
මෙම කේත කොටස තරමක් විශාල හා සංකීර්ණ බවක් පෙනෙන්නට තිබුණද, එය ඇත්ත වශයෙන්ම තේරුම් ගැනීම ඉතා සරල ය. කාරණය වන්නේ පුස්තකාලයේ ප්රභව කේතයේ විචල්ය වර්ග තීරණය කරන ශ්රිතයක් තිබීමයි. පුස්තකාලය සංඛ්යාත්මක විචල්යයකට මුහුණ දී ඇති බව පෙනී ගියහොත්, ඉහත ශ්රිතය අප බලා සිටි ප්රමිතික සොයා ගනී. මෙම කාර්යය වර්ගයේ වස්තූන් සමඟ වැඩ කිරීම සඳහා සම්මත පැන්ඩා මෙහෙයුම් භාවිතා කරයි Series
, මෙන් series.mean()
. ගණනය කිරීමේ ප්රතිඵල ශබ්දකෝෂයක ගබඩා කර ඇත stats
. ශ්රිතයේ අනුවර්තනය කරන ලද අනුවාදයක් භාවිතයෙන් හිස්ටෝග්රෑම් ජනනය කෙරේ matplotlib.pyplot.hist
. අනුවර්තනය කිරීම අරමුණු කර ඇත්තේ කාර්යයට විවිධ වර්ගයේ දත්ත කට්ටල සමඟ වැඩ කළ හැකි බව සහතික කිරීමයි.
සහසම්බන්ධතා දර්ශක සහ නියැදි දත්ත අධ්යයනය කරන ලදී
විචල්යයන් විශ්ලේෂණය කිරීමේ ප්රතිඵලවලින් පසුව, Pandas-profiling, සහසම්බන්ධතා කොටසේ, Pearson සහ Spearman සහසම්බන්ධතා න්යාස පෙන්වනු ඇත.
පියර්සන් සහසම්බන්ධතා අනුකෘතිය
අවශ්ය නම්, වාර්තාවේ උත්පාදනය අවුලුවාලන කේත රේඛාවේ, සහසම්බන්ධය ගණනය කිරීමේදී භාවිතා කරන එළිපත්ත අගයන්හි දර්ශක සැකසිය හැකිය. මෙය කිරීමෙන්, ඔබේ විශ්ලේෂණය සඳහා වැදගත් ලෙස සලකනු ලබන සහසම්බන්ධතාවයේ ප්රබලතාවය ඔබට නියම කළ හැක.
අවසාන වශයෙන්, pandas-profiling වාර්තාව, නියැදි කොටසේ, උදාහරණයක් ලෙස, දත්ත කට්ටලයේ ආරම්භයේ සිට ලබාගත් දත්ත කැබැල්ලක් පෙන්වයි. මෙම ප්රවේශය අප්රසන්න විස්මයන් ඇති කළ හැකිය, මන්ද පළමු නිරීක්ෂණ කිහිපය සමස්ත දත්ත කට්ටලයේ ලක්ෂණ පිළිබිඹු නොකරන නියැදියක් නියෝජනය කළ හැකිය.
අධ්යයනය යටතේ නියැදි දත්ත අඩංගු කොටස
එහි ප්රතිඵලයක් වශයෙන්, මෙම අවසාන කොටස වෙත අවධානය යොමු කිරීමට මම නිර්දේශ නොකරමි. ඒ වෙනුවට, විධානය භාවිතා කිරීම වඩා හොඳය df.sample(5)
, දත්ත කට්ටලයෙන් අහඹු ලෙස නිරීක්ෂණ 5ක් තෝරා ගනු ඇත.
ප්රතිඵල
සාරාංශගත කිරීම සඳහා, pandas-profiling පුස්තකාලය විශ්ලේෂකයාට යම් ප්රයෝජනවත් හැකියාවන් ලබා දෙයි, ඔබට ඉක්මනින් දත්ත පිළිබඳ දළ අදහසක් ලබා ගැනීමට හෝ බුද්ධි විශ්ලේෂණ වාර්තාවක් යමෙකුට ලබා දීමට අවශ්ය අවස්ථාවන්හිදී ප්රයෝජනවත් වනු ඇත. ඒ අතරම, දත්ත සමඟ සැබෑ වැඩ කිරීම, එහි ලක්ෂණ සැලකිල්ලට ගනිමින්, pandas-profiling භාවිතා නොකර, අතින් සිදු කරනු ලැබේ.
ඔබට එක් Jupyter සටහන් පොතක සියලුම බුද්ධි දත්ත විශ්ලේෂණය කෙබඳුදැයි බැලීමට අවශ්ය නම්, බලන්න
හිතවත් පා readers කයින්! ඔබ නව දත්ත කට්ටල විශ්ලේෂණය ආරම්භ කරන්නේ කොතැනින්ද?
මූලාශ්රය: www.habr.com