<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های یاشار</title>
        <link>https://virgool.io/feed/@iYashar</link>
        <description>همسر، پدر و عاشق دیتا!</description>
        <language>fa</language>
        <pubDate>2026-06-07 08:35:52</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/12639/avatar/tuqxwo.png?height=120&amp;width=120</url>
            <title>یاشار</title>
            <link>https://virgool.io/@iYashar</link>
        </image>

                    <item>
                <title>انتقال اطلاعات اکسل های مختلف به SQL Server با پایتون</title>
                <link>https://virgool.io/LivingWithData/%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%DA%A9%D8%B3%D9%84-%D9%87%D8%A7%DB%8C-%D9%85%D8%AE%D8%AA%D9%84%D9%81-%D8%A8%D9%87-sql-server-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-ekor5suiybqd</link>
                <description>در یکی از شرکت هایی که برای آنها داشبورد مدیریتی می ساختم، با صورت مسئله جالبی روبرو شدم. این شرکت اصرار دارد که برای داشبوردهای خود (که با ابزار Microsoft Power BI) ساخته شده اند حتما از یک بانک اطلاعات جامع (Data warehouse) استفاده نماید. جدیدا گزارشی به صورت ماهانه با تعداد ردیف بالا و در قالب اکسل تهیه می کنند که باید به این دیتا منتقل می شد. وقتی می خواتم اینکار را با استفاده از Microsoft Integration service انجام دهم با مشکلی روبرو شدم. من باید اکسل ها را به صورت مشخص با نام به این ابزار به عنوان منبع جهت انتقال داده معرفی می کردم و از آنجایی که اکسل ها ماهانه ایجاد می شدند، مجبور می شدم هر ماه یک اکسل جدید را معرفی نمایم.از آنجایی که قطعا حوصله اینکار را نداشتم!! راه حل را در استفاده از چند خط کد پایتون پیدا کردم! بیایید با هم این کد را مرور کنیم.ز آنجایی که قطعا حوصله اینکار را نداشتم!! راه حل را در استفاده از چند خط کد پایتون پیدا کردم! بیایید با هم این کد را مرور کنیمimport pandas as pdimport globخب ابتدا ماژول های مورد نیاز را وارد می کنیم. ما برای وارد کردن اکسل ها به پایتون از Pandas و برای پیدا کردن فایل ها در سیستم عامل  از ماژول glob استفاده می کنیم.path = r&#039;F:\Report&#039;filenames = glob.glob(path + &amp;quot\*.xlsx&amp;quot)print(&#039;File names:&#039;, filenames)finalexcelsheet = pd.DataFrame()خب ابتدا مسیر را معرفی کرده و سپس تمامی فایل با پسوند xlsx را در آن پوشه می خوانیم.for file in filenames:     df = pd.concat(pd.read_excel(     file, sheet_name=None), ignore_index=True, sort=False)     finalexcelsheet = finalexcelsheet.append(df, ignore_index=True)از آنجایی که محتوای همه اکسل ها مشابه است، من با دستور بالا آنها را به یک فایل اکسل تبدیل می کنم.print(&#x27;Final Sheet:&#x27;)display(finalexcelsheet)خب حالا می توانیم نگاهی به نتیجه کار بیندازیم.  کدهای لازم برای انتقال این اطلاعات به sql server به شکل زیر می باشد. لازم به توضیح است که PreProcessing لازم و تا حد زیادی حیاتی است. لذا پیش از انتقال اطلاعات اینکار را انجام دهید (از جمله fillna)import pyodbcconn = pyodbc.connect(&#039;Driver={SQL Server};&#039;             &#039;Server=ServerName;&#039;             &#039;Database=DataBaseName;&#039;             &#039;Trusted_Connection=yes;&#039;             &#039;UID=sa;&#039;             &#039;PWD=sa;&#039;)cursor = conn.cursor()cursor.fast_executemany = Trueدر بالا با دیتابیس SQL مرتبط شدیم. حالا نیاز است کوئری insert  را بنویسیم و از cursor بخواهیم آن را اجرا کند. توجه کنید تعداد ستون های نوشته شده جلوی نام جدول در دستور Insert با تعداد علامت های وال در VALUES و تعداد مقادیر در data باید یکی باشد.همچنین در پایان Cursor و ارتباط را می بندیم.query = &#039;&#039;&#039;INSERT INTO TableName ([A],[B],[C])VALUES (?,?,?)&#039;&#039;&#039;data = [(row.X, row.Y, row.Z,) for row in finalexcelsheet.itertuples()]
cursor.executemany(query, data)cursor.commit()cursor.close()conn.close()خب دیتای ما به دیتابیس منتقل شد!فایل تکمیل تر را می توانید در گیت هاب من مشاهده نمایید.</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Wed, 18 Jan 2023 18:02:46 +0330</pubDate>
            </item>
                    <item>
                <title>الگوریتم آپریوری (apriori) چیست؟ به همراه پیاده سازی با پایتون</title>
                <link>https://virgool.io/LivingWithData/%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D9%85-%D8%A2%D9%BE%D8%B1%DB%8C%D9%88%D8%B1%DB%8C-apriori-%DA%86%DB%8C%D8%B3%D8%AA-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D9%BE%DB%8C%D8%A7%D8%AF%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-m8kakbbnvmgx</link>
                <description>اول اجازه بدید نگاهی به تعریف ارائه شده در ویکیپدیا بندازیم:یک الگوریتم برای استخراج مکرر مجموعه‌های مورد و یادگیری قوانین مرتبط با پایگاه‌های داده رابطه‌ای است. با شناسایی موارد فردی مکرر در پایگاه داده و گسترش آنها به مجموعه اقلام بزرگتر و بزرگتر تا زمانی که آن مجموعه موارد به طور کافی در پایگاه داده ظاهر شود، ادامه می‌یابد. مجموعه‌های مکرر موارد تعیین شده توسط ایپرایوری می‌تواند برای تعیین قوانین ارتباطی که روندهای کلی در پایگاه داده را برجسته می‌کند، مورد استفاده قرار گیرد: این الگوریتم در حوزه‌هایی مانند تجزیه و تحلیل سبد بازار کاربرد دارد.در واقع طبق تعریف فوق الگوریم سعی می کنه موارد پر تکرار رو در سبد خرید مشتریان شناسایی و براساس روابط اونها، بتونه به مشتری پیشنهاد بده که اگر مثلا فلان محصول رو برداشت، چه محصول دیگه ای رو می تونه برداره.تو این پست ابتدا یکی از روش های پیاده سازی این الگوریتم در پایتون رو با هم بررسی می کنیم. در ادامه درباره مزایا و معایب این الگوریتم هم صحبت می کنیم.خب بریم سراغ پیاده سازی:من از دیتای یکی از سوالات سایت کوئرا استفاده کردم. در این دیتا فرض شده که مجموعه خریدهای یک مشتری در هر روز یک سبد خرید هست. بنابراین من مشتری و تاریخ رو در یک ستون جدید تحت عنوان sabad به Dataframe اضافه کردم:import pandas as pdimport numpy as npfrom mlxtend.frequent_patterns import apriori, association_rulesdata = pd.read_csv(&#039;supermarket.csv&#039;)data[&#039;Sabad&#039;]=data[&#039;Customer Id&#039;]+data[&#039;Date&#039;]حالا به یک ستون عددی نیاز داریم تا تعداد هر کالا در هر سبد رو نشون بده. از اونجایی که الگوریم آپریوری برای محاسبه ابتدا دیتا رو ترانسپوز می کنه (یعنی محصولات رو به عنوان ستون در نظر می گیره) برای جدولش نیاز به مقدار عددی داره.data2 = data.groupby([&#039;Sabad&#039;,&#039;Product&#039;]).size()data2 = pd.DataFrame(data2).reset_index()data2.columns = [&#039;Sabad&#039;,&#039;Product&#039;,&#039;Count&#039;]خب حالا می تونیم جدول ترانسپوزه رو ایجاد کنیمTdata = (data2.groupby([&#039;Sabad&#039;, &#039;Product&#039;])[&#039;Count&#039;].sum().unstack().reset_index().fillna(0).set_index(&#039;Sabad&#039;))نتیجه شبیه عکس زیر میشه: برای مرحله بعد نیازه دیتای شما one hot encode بشه. One hot encode به معنی تبدیل اون بخش از اطلاعات به اعدادی بین 0 و 1 هستش. در این مورد خاص الگوریم می خواد بودن یا نبودن کالا رو متوجه بشه و کاری به ارزش نداره. بنابراین یک تابع تعریف می کنه فقط مقادیر 0 و 1 رو در جدول بالا جایگزین کنهdef hot_encode(x):     if(x&lt;= 0):          return 0     if(x&gt;= 1):          return 1Tdata_encoded = Tdata.applymap(hot_encode)خب حالا فقط مونده پیاده سازی الگوریتم:frq_items = apriori(Tdata_encoded, min_support = 0.01, use_colnames = True).sort_values(&#039;support&#039;, ascending = False)این دو خط به شما مقدار support هر محصول رو میده. یه جورایی میشه محصولی که بیشترین حضور رو در سبدهای خرید داشته، یا همون پرطرفدارترین ها. در خط بالا مقدار min_support به شما اجازه میده که حداقل مقدار اهمیت محصول رو مشخص کنید.حالا روی این لیست دستورات زیر رو اجرامی کنیم تا به ما بگه که کدام محصول رو می تونیم با کدوم محصول یا گروه محصول ها پیشنهاد بدیم:rules = association_rules(frq_items, metric =&amp;quotlift&amp;quot, min_threshold = 0.001)rules = rules.sort_values([&#039;confidence&#039;], ascending =[False])print(rules)خروجی های اصلی کد بالا به شرح زیر هستن:confidence:به معنی میزان ارتباط بین سبد معرفی شده و کالای پیشنهادی که هر چه به یک نزدیک تر باشد، نشان دهنده رابطه قوی تری است. اما این عدد فقط در رابطه یک طرفه صدق می کند و برای رابطه برعکس معنی دار نیست.leverage:تفاوت فرکانس سبد و کالای پیشنهادی زمانی که کالای اصلی و پیشنهادی با هم باشند، نسبت به زمانی که مستق باشند.min_threshold:تابع به شما امکان می دهد متریک مورد علاقه و آستانه مطابق با آن را مشخص کنید. اینجا ما از متریک lift استفاده کردیم.lift:برای نشان تعداد دفعات یک ارتباط به کار می رود.پینوشت:برای مطالعه بیشتر روی کتابخانه mlxtend.frequent_patterns به این لینک مراجعه کنید.کد بالا در گیت هاب من منتشر شده .</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Sat, 19 Feb 2022 18:19:25 +0330</pubDate>
            </item>
                    <item>
                <title>محاسبه میانگین متحرک (moving average) در python</title>
                <link>https://virgool.io/LivingWithData/%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D9%85%DB%8C%D8%A7%D9%86%DA%AF%DB%8C%D9%86-%D9%85%D8%AA%D8%AD%D8%B1%DA%A9-moving-average-%D8%AF%D8%B1-python-whs6fnwoq8rm</link>
                <description>یکی از ابزارهای پایتون برای آنالیز داده، پانداس (pandas) هست که اتفاقا ابزار بسیار قدرتمندی هست. امروز داشتم با این ابزار کار می کردم و تابع هاش رو مرور می کردم که بر خوردم به تابع rolling. تابع قدرتمندی که ردی ستون مورد نظر شما حرکت می کنه و تابعی رو روی هر تعداد از داده های اون بخش اجرا می کنه. اگر می خواید بدونید کدوم توابع، نگاهی به لینک زیر بندازین: https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html  https://virgool.io/d/whs6fnwoq8rm/pandas.DataFrame.rolling%E2%80%94pandas1.3.5documentation(pydata.org) import pandas as pddata = pd.read_csv(&#039;bourse.csv&#039;)دیتا نمونه شامل شاخص بورس از سال 1390 هستش. یه خرده بازی با تاریخ:data[&#039;year&#039;] = data[&#039;Date_shamsi&#039;].str[:4]data[&#039;month&#039;] = data[&#039;Date_shamsi&#039;].str[5:7]data[&#039;day&#039;] = data[&#039;Date_shamsi&#039;].str[8:10]حالا تابع بریم سراغ میانگین متحرک:rc = 4nvda[&#039;movingsum&#039;] = data[&#039;close&#039;].rolling(rc).sum()data[&#039;movingaverage&#039;] = data[&#039;movingsum&#039;]/rcdata.head(10)خب، تو خط اول یک متغیر رو برابر چهار قرار دادیم. می خوایم برای هر چهار مقدار در ستون مورد نظرمون، میانکین متحرک رو حساب کنیم. خط دوم جمع هر چهار عدد رو مقابل چهارمین عدد میزاره. حالا کافیه این جمع رو بر مقدار متغیرمون تقسیم کنیم. حتی می تونیم متغیر رو از کاربر ورودی بگیریم و براساس اون محاسبه کنیم.می تونید کامل شده کد رو به همراه نمودار در گیت هاب من مشاهده کنید:  https://github.com/iyashar/MovingAverage </description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Sat, 22 Jan 2022 09:52:05 +0330</pubDate>
            </item>
                    <item>
                <title>خواندن اطلاعات از اکسل با پایتون</title>
                <link>https://virgool.io/LivingWithData/%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%A7%D8%B2-%D8%A7%DA%A9%D8%B3%D9%84-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-qbgtgodd2fss</link>
                <description>در پست قبلی درباه نحوه ویرایش فایل اکسل و نوشتن در آن با استفاده از زبان پایتون صحبت کردیم. در این پست می خواهیم داده های نوشته شده را در پایتون بخوانیم. در این مطلب ما از ماژول XLRD استفاده می کنیم که به ما کمک می کند اطلاعات اکسل را با انتخاب دقیق سطر و ستون بخوانیم.ابتدا باید این ماژول را نصب نماییمpip install xlrdاین ماژول با نسخه فعلی اکسل (من نسخه 2016 و 2019 رو تست کردم) کار می کند. برای اینکه پایتون فایل شما رو ببیند باید مسیر فایل را معرفی کنید. سپس از پایتون بخواهیم که فایل را برای ما باز کندimport xlrd
loc = (&amp;quotc:\\temp\\welcome.xlsx&amp;quot)
wb = xlrd.open_workbook(loc)حالا باید برگه ای (Sheet) که می خواهید را انتخاب کنید. برای اینکار می توانید از دستور wb.sheet_by_index(0) استفاده کنید. شماره داخل پرانتز نمایانگر شمارش برگه های اکسل است. یا در صورت نیاز می توانید از دستور wb.sheet_by_name(sheet name) استفاده کنید.sheet = wb.sheet_by_index(0)
## OR
wb.sheet_by_name(Sheet1)حالا برای امتحان می توانیم دستور زیر را اجرا کنیم:print(sheet.cell_value(0,0))این دستور مقدار ثبت شده در اولین سطر و اولین ستون را نمایش می دهد. در اکسل نمونه ما این مقدار &quot;Name&quot; است.حال می خواهیم بدانیم برگه ما چند سطر و ستون دارد. برای اینکار می توانید از دستورات زیر استفاده نمایید:print(sheet.nrows)
print(sheet.ncols)از خروجی این دستورات می توانید برای عملیات های مختلف استفاده نمایید. به عنوان نمونه می خواهیم مقدار وارد شده در سطر اول را مشاهده نماییم:for i in range(sheet.ncols):     print(sheet.cell_value(0, i))مقادیر داخل پرانتز به ترتیب به شماره سطر و ستون اشاره می کنند. لذا خروجی مقادیر سطر اول و ستون های موجود به تعدادی که پایتون در قسمت عبارت شرط شمرده می باشد.همین کار را می توانیم برای مقادیر یک ستون نیز انجام دهیم.for i in range(sheet.nrows):
     print(sheet.cell_value(i, 0))یا همه سطر ها و ستون ها را در یک نگاه ببینیم:for i in range(sheet.nrows):
      for j in range(sheet.ncols):
           print(sheet.cell_value(i, j))شما می توانید کدهای بالا را در گیت هاب من مشاهده کنید.</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Sun, 02 May 2021 12:25:07 +0430</pubDate>
            </item>
                    <item>
                <title>ویرایش فایل اکسل با پایتون (python)</title>
                <link>https://virgool.io/LivingWithData/%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%D9%81%D8%A7%DB%8C%D9%84-%D8%A7%DA%A9%D8%B3%D9%84-%D8%A8%D8%A7-%D9%BE%D8%A7%DB%8C%D8%AA%D9%88%D9%86-python-kdgzisrpqorp</link>
                <description>مدیران دیتابیس ها معمولاً داده های مورد نیاز را در یک فایل اکسل به اشتراک می گذارند ، قالب بندی را انجام می دهند و آنها را با مقامات مربوطه به اشتراک می گذارند. این یک تمرین منظم است. پایتون به خوبی با Microsoft Excel ادغام می شود.این مطلب شامل موضوعات زیر است:با استفاده از Python یک نمونه فایل اکسل ایجاد کنیدبا استفاده از Python داده ها را از یک فایل اکسل وارد کنیدبا استفاده از Python داده ها را در صفحه اکسل قالب بندی کنیدابزارهاکتابخانه XlsxWriter: ما برای نوشتن پرونده های Microsoft Excel با فرمت XLSX از ماژول XlsxWriter Python استفاده می کنیم. این گزینه های مختلف قالب بندی ، نمودارها ، جعبه های متن ، رشته های چند فرمتی و ماکرو برای فایل های اکسل را فراهم می کند.کتابخانه Xlrd: یک کتابخانه پایتون برای خواندن داده ها از فایل های اکسل می باشد. این برنامه از هر دو فرمت XLS و XLSX برای خواندن داده ها و قالب بندی اطلاعات از فایل های اکسل پشتیبانی می کند.ماژول XlsxWriter و xlrd Python را با استفاده از ابزار pip نصب کنید:pip install XlsxWriter
pip install xlrdایجاد فایل اکسلبیایید یک نمونه فایل اکسل بدون هیچ گونه قالب بندی ایجاد کنیم. کد زیر را در پایتون اجرا کنید:import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocme.xlsx&#039;)
worksheet = workbook.add_worksheet()
worksheet.write(&#039;A1&#039;, &#039;Welcome to Python&#039;)
workbook.close()کد بالا یک فایل اکسل با عنوان Welcome.xlsx در پوشه C: \ temp ایجاد می کند، یک صفحه کار جدید در آن اضافه می کند، متن &quot;Welcome to Python&quot; را در ستون A1 می نویسد و کتاب کار را می بندد.اگر فایل Welcome.xlsx  را باز کنید داده های وارد شده توسط کد پایتون را نشان می دهد.تقسیم کلمات بین ستون هابیایید کد بالا را اصلاح کنیم و کلمات را به ستون های مختلف A1 ، B1 و C1 تقسیم کنیم:import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocme.xlsx&#039;)
worksheet = workbook.add_worksheet()
worksheet.write(&#039;A1&#039;, &#039;Welcome&#039;)
worksheet.write(&#039;B1&#039;, &#039;To&#039;)
worksheet.write(&#039;C1&#039;, &#039;Python&#039;)
workbook.close()هنگامی که کد بالا را اجرا کردیم ، فایل Welcome.xlsx را بازنویسی می کند:ورود داده ها در چندین ردیف و ستون همراه با سر ستونفرض کنید می خواهیم با استفاده از اسکریپت های Python یک صفحه اکسل با داده های زیر ایجاد کنیم. این شامل چندین ستون و ردیف است:ستون ها را با استفاده از worksheet.write تعریف می کنیم:worksheet.write(&#039;A1&#039;, &#039;Name&#039;)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;)برای ردیف ها و ستون ها شاخص را شروع می کنیم. برای ردیف اول و ستون اول ، از یک شمارنده نمایه سازی صفر استفاده می کند. ما نام ستون ها را در مرحله قبل مشخص کردیم ، بنابراین شمارنده من از سطر 1 و col = 0 شروع می شود.داده های مورد نیاز را در قالب آرایه در متغیر data می نویسیم. این شامل داده هایی است که می خواهیم در اکسل نمایش دهیم:data = (
[&#039;Yashar&#039;, &#039;IT&#039;],
[&#039;Mehdi&#039;,&#039;Physiotherapist&#039;],
[&#039;Mitra&#039;, &#039;Student&#039;],
[&#039;Yasaman&#039;,&#039;Bank Manager&#039;],)کد زیر شامل یک حلقه FOR برای عبور از هر سطر و ستون است:for name, score in (data):
worksheet.write(row, col, name)
worksheet.write(row, col + 1, score)
row += 1بنابراین اسکریپت کامل به صورت یر خواهد بود: نویسه های پررنگ  (Bold) با استفاده از اسکریپت های پایتوندر بسیاری از موارد ، ما نام ستون ها را با حروف پررنگ ایجاد می کنیم تا کاربران بتوانند ستون را با داده های واقعی متفاوت کنند. همانطور که در زیر نشان داده شده است ، در پایتون ویژگی bold را فعال می کنیم:bold = workbook.add_format({&#039;bold&#039;: True})کد زیر فایل اکسلی مشابه قبل را ایجاد می کند، با این تفاوت که سر ستون های آن پررنگ است.import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welcome.xlsx&#039;)
worksheet = workbook.add_worksheet()
bold = workbook.add_format({&#039;bold&#039;: True})
worksheet.write(&#039;A1&#039;, &#039;Name&#039;, bold)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;, bold)
row = 1
col = 0
data = ([&#039;Yashar&#039;, &#039;IT&#039;],[&#039;Mehdi&#039;,&#039;Physiotherapist&#039;],[&#039;Mitra&#039;, &#039;Student&#039;],[&#039;Yasaman&#039;,&#039;Bank Manager&#039;],)
for name, score in (data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1
workbook.close()می توانید ستون های Name و Department را با حروف درشت مشاهده کنید:تغییر عرض ستون های اکسلما می توانیم عرض ستون را برای سلولهای اکسل در پایتون تعریف کنیم. برای این کار از تابع worksheet.set_column همراه با عرض ستون استفاده می کنیم.worksheet.set_column(&#039;B:B&#039;, 60)در کد بالا ما عرض 60 را به ستون اضافه کردیم.import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocme.xlsx&#039;)
worksheet = workbook.add_worksheet()
bold = workbook.add_format({&#039;bold&#039;: True})
worksheet.write(&#039;A1&#039;, &#039;Name&#039;, bold)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;, bold)
row = 1
col = 0
data = ([&#039;Yashar&#039;, &#039;Hi, You are on iYashar.ir&#039;],[&#039;Mehdi&#039;,&#039;How do you get to see a physiotherapist?&#039;],
&#039;Mitra&#039;, &#039;I am a student of class 1 in Hafez primary school.&#039;],[&#039;Yasaman&#039;,&#039;Are you a Bank Manager?&#039;],)
worksheet.set_column(&#039;B:B&#039;, 60)
for name, score in (data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1
workbook.close()به تفاوت خروجی نگاه کنید:تغییر رنگ و اندازه قلماکنون ، بیایید تغییر رنگ و اندازه قلم را برای سر ستون ها بررسی کنیم.ما رنگ فونت را با استفاده از font_color و اندازه قلم را با استفاده از متغیرهای set_font_size در اسکریپت های پایتون تعریف می کنیم. اکنون رنگ قرمز را برای سر ستون با اندازه قلم 16 اضافه کنیم:import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocm.xlsx&#039;)
worksheet = workbook.add_worksheet()
cell_format = workbook.add_format({&#039;bold&#039;: True, &#039;font_color&#039;: &#039;red&#039;})
cell_format.set_font_size(16)
worksheet.write(&#039;A1&#039;, &#039;Name&#039;, cell_format)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;, cell_format)
row = 1
col = 0
data = ([&#039;Yashar&#039;, &#039;Hi, You are on iYashar.ir&#039;],[&#039;Mehdi&#039;,&#039;How do you get to see a physiotherapist?&#039;],[&#039;Mitra&#039;, &#039;I am a student of class 1 in Hafez primary school.&#039;],[&#039;Yasaman&#039;,&#039;Are you a Bank Manager?&#039;],)
worksheet.set_column(&#039;B:B&#039;, 60)
worksheet.set_column(&#039;B:B&#039;, 60)
for name, score in (data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1
workbook.close()اجرای کد، خروجی زیر را ایجاد می کند:اضافه کردن یک زیر خط برای سر ستونبرای اضافه کردن زیر خط از تابع cell_format.set_underline استفاده می نماییم.بیایید کد زیر را برای اضافه کردن زیر خط به سر ستون ها اجرا کنیم:import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocme1.xlsx&#039;)
worksheet = workbook.add_worksheet()
cell_format = workbook.add_format({&#039;bold&#039;: True, &#039;font_color&#039;: &#039;red&#039;})
cell_format.set_font_size(16)
cell_format.set_underline()
worksheet.write(&#039;A1&#039;, &#039;Name&#039;, cell_format)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;, cell_format)
row = 1
col = 0
data = ([&#039;Yashar&#039;, &#039;Hi, You are on iYashar.ir&#039;],[&#039;Mehdi&#039;,&#039;How do you get to see a physiotherapist?&#039;],[&#039;Mitra&#039;, &#039;I am a student of class 1 in Hafez primary school.&#039;],[&#039;Yasaman&#039;,&#039;Are you a Bank Manager?&#039;],)
worksheet.set_column(&#039;B:B&#039;, 60)
worksheet.set_column(&#039;B:B&#039;, 60)
for name, score in (data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1
workbook.close()خروجی به شکل زیر خواهد بود :زیر خط حالت های مختلفی دارد:1 = قالب پیش فرض2 = دوبار زیر خط زدن33 = زیر خط حسابداری واحد34 = زیر حسابداری دوگانهما می توانیم داده ها را برای حسابداری با استفاده از کد زیر قالب بندی کنیم:cell_format.set_underline(34)اگر قالب را به دو خط زیرین تغییر دهیم ، خروجی زیر را می گیرید:cell_format.set_underline(2)تراز بندی متندر یک صفحه کاری مایکروسافت اکسل می توانیم متن را به سمت چپ ، راست یا وسط تراز کنیم. در تصویر زیر قالب بندی را اعمال کردیم:سر صفحه باید تراز وسط باشد، ردیف های دیگر رنگ داده باید به رنگ آبی و تراز وسط باشد:در این حالت ، ما دو قالب داریم - یکی برای هدر ستون و دیگری برای بقیه ستون ها. در اسکریپت های Python زیر ، cell_format و cell_format1 را تعریف کردیم:در Cell_format ، یک خط دیگر برای ترازبندی قلم اضافه می کنیم.cell_format.set_align(&#039;center&#039;)در قالب دیگری ، ما با استفاده از ویژگی font_color رنگ قلم را تعریف کردیم و تراز را روی مرکز تنظیم کردیم.cell_format1 = workbook.add_format({&#039;font_color&#039;: &#039;blue&#039;})
cell_format1.set_align(&#039;center&#039;)اکنون دو نوع قالب متن داریم. ما باید آنها را فقط در ستون های مناسب اعمال کنیم. به عنوان مثال سرآیند ستون ها همانند مثال قبلی به نظر می رسد با این تفاوت که تراز شده در مرکز است. ما برای سر ستون ها از cell_format استفاده می کنیم:cell_format = workbook.add_format({&#039;bold&#039;: True, &#039;font_color&#039;: &#039;red&#039;})
cell_format.set_font_size(16)
cell_format.set_underline(2)
cell_format.set_align(&#039;center&#039;)برای بقیه داده ها ، به تراز وسط و قلم به رنگ آبی نیاز داریم. قالب دیگری را برای این کار تعریف می کنیم:cell_format1 = workbook.add_format({&#039;font_color&#039;: &#039;blue&#039;})
cell_format1.set_align(&#039;center&#039;)این قالب سلول جدید را برای داده های A1 تا A5 و B2 تا B5 با استفاده از تابع worksheet.set_column اعمال می کنیم:worksheet.set_column(&#039;B2:B5&#039;,60,cell_format1)
worksheet.set_column(&#039;A1:A5&#039;, 20,cell_format1)ما می توانیم کد کامل را در زیر مشاهده کنیم و آن را اجرا کنیم تا نتایج مورد نیاز را بدست آوریم:import xlsxwriter
workbook = xlsxwriter.Workbook(&#039;c:\\temp\\Welocme.xlsx&#039;)
worksheet = workbook.add_worksheet()
cell_format = workbook.add_format({&#039;bold&#039;: True, &#039;font_color&#039;: &#039;red&#039;})
cell_format.set_font_size(16)
cell_format.set_underline(2)
cell_format.set_align(&#039;center&#039;)
cell_format1 = workbook.add_format({&#039;font_color&#039;: &#039;blue&#039;})
cell_format1.set_align(&#039;center&#039;)
worksheet.write(&#039;A1&#039;, &#039;Name&#039;, cell_format)
worksheet.write(&#039;B1&#039;, &#039;Department&#039;, cell_format)
row = 1
col = 0
data = ([&#039;Yashar&#039;, &#039;Hi, You are on iYashar.ir&#039;],[&#039;Mehdi&#039;,&#039;How do you get to see a physiotherapist?&#039;],[&#039;Mitra&#039;, &#039;I am a student of class 1 in Hafez primary school.&#039;],[&#039;Yasaman&#039;,&#039;Are you a Bank Manager?&#039;],)
worksheet.set_column(&#039;B1:B1&#039;, 60)
worksheet.set_column(&#039;B2:B5&#039;,60,cell_format1)
worksheet.set_column(&#039;A1:A5&#039;, 20,cell_format1)
for name, score in (data):
    worksheet.write(row, col, name)
    worksheet.write(row, col + 1, score)
    row += 1
workbook.close()نتیجهدر این مقاله ، ما اسکریپت های پایتون را برای قالب بندی داده ها در Microsoft Excel بررسی کردیم. پایتون یک زبان قدرتمند است و ما می توانیم کارهای زیادی را با چند خط کد انجام دهیم.منبع: SQLSHACK</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Wed, 10 Mar 2021 19:25:28 +0330</pubDate>
            </item>
                    <item>
                <title>سلام Git! من قبلاً ازت متنفر بودم !</title>
                <link>https://virgool.io/cheyab-blog/gettingfriendwithgithub-fpgopjk6yxgw</link>
                <description>بیشتر ما حتی پس از اجرای ابتدایی ترین دستورات Git، در اولین آزمایش آن را دوست نداریم.  داشتن ورق تقلب هم به ما کمکی نمی کند. Git بسیار پیچیده است.  متأسفانه ، زندگی شما به عنوان یک توسعه دهنده وب بدون Git نیز پیچیده خواهد بود!مشکل شماره 1 زندگی بدون Git این است که شما نمی توانید نسخه های پروژه را به طور مناسب مدیریت کنید.  با شروع یک پروژه جدید ، چندین فایل اساسی ایجاد می کنید.  این پرونده های اصلی نسخه اول برنامه شما را تشکیل می دهند.  اما روز بعد ویژگی اول را توسعه می دهید و به این ترتیب نسخه دوم برنامه را ایجاد می کنید. بعداً تصمیم می گیرید اولین ویژگی را مجدداً تغییر دهید.  بنابراین ، شما یک نسخه سوم از برنامه خود ایجاد می کنید. هنگامی که کد را حذف کرده یا دوباره کار می کنید ، نمی توانید حالت قبلی آن را بازیابی کنید (بخوانید: نسخه).  بدون Git ، شما باید هر نسخه از پروژه را در مکانی دیگر ذخیره کنید.  با این حال ، بازگرداندن یک پروژه از چندین مکان گزینه خوبی نیست.  چگونه می دانید نسخه دقیق برنامه مورد نیاز شما چیست؟  از طرف دیگر Git می تواند به شما بگوید چه نسخه پروژه ای را بازیابی می کنید. در اینجا یک مشکل دیگر توسعه وجود دارد: چندین توسعه دهنده روی  یک پروژه کار خواهند کرد و به نسخه های قبلی برنامه نیز نیاز دارند.  چگونه می توانید کد خود را با کل تیم توسعه به اشتراک بگذارید؟ &quot;من  می توانم از Dropbox ، گوگل درایو ، OneDrive ، فلش درایو استفاده کنم ...  درایو دیگر برای ذخیره کد من و به اشتراک گذاری آن با همه! &quot; توسعه دهنده ناشناسدرست است.  اما باز هم ، چگونه می توانید با اطمینان بدانید که کدام نسخه کد جدیدترین است؟  و اگر دوست شما می خواهد کد شما را با نسخه خود در همان پرونده ادغام کند ،  آیا می خواهید به صورت خط به خط بروید تا ببینید کد شما در کدام قسمت از  پرونده ادغام می شود؟  شرط می بندم که شما اینکار را نمی کنید.گیت به راحتی هر دو مشکلی را که من توضیح دادم حل می کند: مدیریت نسخه های پروژه و به اشتراک گذاری کد در بین توسعه دهندگان.  اما برای اینکه با Git دوست باشیم ، باید درک کنیم که Git چگونه کار می کند.  برای این کار باید شروع به استفاده از دستورات اولیه کنیم.گیت چیست؟گیت یک سیستم کنترل نسخه توزیع شده است. &quot;توزیع&quot; به این معنی است که کلیه توسعه دهندگان درون یک تیم دارای نسخه کاملی از پروژه هستند.  یک سیستم کنترل نسخه به سادگی نرم افزاری است که به شما امکان می دهد نسخه های برنامه را به طور مؤثر مدیریت کنید.  به لطف Git شما می توانید موارد زیر را انجام دهید: تمام پرونده های یک پروژه را پیگیری کنید هرگونه تغییر در پرونده های پروژه را ضبط کنیدنسخه های قبلی فایل ها را بازیابی کنیدکدها را مقایسه و تجزیه و تحلیل کنیدکدها را از رایانه های مختلف و اعضای تیم های مختلف ادغام نمایید قابلیت های ذکر شده در بالا نحوه عملکرد Git را نشان نمی دهد. با تمام پیچیدگی ها Git بسیار ساده کار می کند: شما ابتدا باید یک مخزن محلی در فهرست اصلی (پوشه) پروژه خود ایجاد کنید.  پس از آن Git می تواند پرونده ها و دایرکتوری های پروژه را ردیابی کرده و آنها را به مخزن اضافه کند. من می دانم چه کسی چه کاری را انجام داده است ، چه موقع و چرایک مخزن فقط یک فهرست (یک پوشه) در فهرست اصلی پروژه شما است. (در کل مقاله ما از اصطلاح دایرکتوری استفاده خواهیم کرد ، نه پوشه.) شما  نمی توانید مخازن را در سیستم فایل خود مشاهده کنید زیرا مخفی هستند.  اما هنوز هم می توانید یک مخزن را در ویرایشگر کد یا IDE خود ببینید: مخزن محلی چیست؟  بیایید از تخیل خود برای درک مخازن استفاده کنیم. اگر وسایل (کد) خود را در خانه (در رایانه ای با یک فهرست دایرکتوری Git) ذخیره می کنید ، وسایل خود را به صورت محلی ذخیره می کنید.  بنابراین یک مخزن در رایانه شخصی شما محلی خواهد بود.  یک مخزن از راه دور مانند یک انبار عمومی است که در یک ساختمان دیگر واقع شده است.  شاید در مورد مخازن از راه دور مانند GitHub ، BitBucket و GitLab شنیده باشید.  آنها مانند انبارهای کد هستند.  با تشکر از Git می توانید کل پروژه خود را در یک مخزن از راه دور کپی کنید در حالی که آن را در یک مخزن محلی نیز نگه دارید.چرا از مخازن محلی و راه دور استفاده می کنیم؟  بگذارید کمی توضیح دهیم.در دنیای واقعی ، شما نمی توانید دقیقاً همان موارد را در خانه و یک انبار داشته باشید.  اگر امور شما از خانه ناپدید شوند (خدای ناکرده!) ، شما می توانید نسخه ها یا کلون (در بهترین حالت) را از یک فروشگاه بازیابی کنید.  و شما هنوز هم برخی از اشیاء با ارزش (چیزهای اصلی) را از دست می دهید.  با وجود GitHub یا BitBucket ، این یک داستان متفاوت است. انبارهای از راه دور (مخازن مانند GitHub یا BitBucket) دقیقاً همان کدی  را که در مخازن محلی خود دارید (روی رایانه منزل خود) ذخیره می کنند.  اگر کد شما از مخزن محلی شما ناپدید شد ، می توانید کاملاً همان کد را از یک مخزن از راه دور بازیابی کنید.  یک مخزن از راه دور همچنین به عنوان یک مرکز اصلی که اعضای یک تیم توسعه می توانند برای دسترسی به کد پروژه به آن وصل شوند ، عمل می کند.برای اجرای دستورات Git دو روش وجود دارد.  می توانید از برنامه هایی با رابط کاربری گرافیکی مانند  GUI Clients برای Git استفاده کنید. همچنین می توانید دستورات ترمینال را برای Git اجرا کنید. در این مقاله ما از ترمینال (که به آن خط فرمان نیز گفته می شود) برای اجرای دستورات Git استفاده می کنیم.  ترمینال ابزاری اساسی است که همه توسعه دهندگان باید آن را درک کنند. در آخر اینکه باید Git را روی رایانه خود نصب کنید.  اگر قبلاً این کار را نکرده اید، این دستورالعمل ها را دنبال کنید.  پس از نصب، می توانید به عنوان مثال به دستورات اولیه Git بروید تا با آن بیشتر آشنا شوید.پیکربندیوقتی برای اولین بار به یک بانک مراجعه می کنید و می خواهید پول خود را در آنجا ذخیره کنید ، آنها یک دسته کاغذ به شما می دهند تا آن را پر کنید.  قبل از استفاده از خدمات بانکی ، باید در بانک ثبت نام کنید.  Git می خواهد شما قبل از شروع استفاده از مخزن ، همین کار را انجام دهید (با Git ثبت نام کنید). برای اینکه به Git بگویید شما چه کسی هستید ، دو دستور زیر را اجرا کنید:$ git config --global user.name &amp;quotKing Kong&amp;quot$ git config --global user.email &amp;quotking-kong@gmail.com&amp;quotشما اولین تنظیمات را تمام کرده اید!   (امیدوارم نام و ایمیل واقعی خود را ثبت کرده باشید. اگر اینطور نیست ، می  توانید با اجرای دوباره همان دستورات به راحتی آنها را تغییر دهید ، اما  این بار با استفاده از نام و ایمیل واقعی خود)بیایید به سرعت دستورات Git را مرور کنیم. شما ابتدا باید &quot;git&quot; را تایپ کنید ، به دنبال آن یک دستور  &quot;پیکربندی یا config &quot;  و در مثال ما  گزینه &quot;--global&quot;  را مقدار دهی می کنید. گزینه &quot;--global&quot; به این معنی است که نام کاربری و ایمیل خود را برای Git در سطح کل رایانه خود تنظیم می کنید. مهم نیست که چند پروژه با مخازن محلی جداگانه ایجاد کنید ، Git از همان  نام کاربری و ایمیل استفاده می کند.قبل از شروع استفاده از Git ، یک مورد برای پیکربندی وجود دارد.  از آنجا که خروجی بسیاری از دستورات Git را در ترمینال مشاهده خواهید کرد ، بهتر است برای خروجی چند رنگ زیبا داشته باشید.  برای روشن کردن برجسته کردن کد ، فقط دستور زیر را اجرا کنید: $ git config --global color.ui trueمجدداً ، این پیکربندی در سطح کل سیستم اعمال می شود و به Git می گوید کلمات موجود در ترمینال را برجسته کند تا خوانایی را بهبود بخشد.آخرین دستور تنظیمات اولیه به شما امکان می دهد پیکربندی های خود را مشاهده کنید.  اجرای این دستور همان درخواست برای کپی کردن قرارداد خود است:$ git config --listاین برای شروع کافی است.  شما با اجرای چندین دستور پیکربندی ساده ، احساس Git را احساس کردید.  اما شما در واقع از Git استفاده نکرده اید.  بیایید برخی از گیت های واقعی را امتحان کنیم.دستورات اساسی Git شما تاکنون آموخته اید:شروع یک مخزن محلی جدید با Gitبرای ادامه استعاره بانکی ما ، باید صریحاً از بانک بخواهیم صندوق امانات جدیدی را برای ذخیره اثرات ما باز کند (بخوانید: کد). با فرض اینکه شما یک دایرکتوری خالی را برای پروژه خود ایجاد کرده اید ، باید صریحاً از Git بخواهید یک صندوق امانات - یک مخزن - در آن فهرست ایجاد کند: $ git initدستور &quot;init&quot; مخفف اولیه سازی است.  هنگامی که &quot;git init&quot; را اجرا کردید ، Git یک دایرکتوری پنهان با نام &quot;.git&quot; را در مسیر پروژه ایجاد می کند و در واقع تأیید می کنید جعبه سپرده شما آماده است!  بعد چی؟  شاید بخواهید از وضعیت جعبه خود اطلاع داشته باشید: آیا هنوز چیزی ذخیره می کند؟  برای اطلاع از وضعیت Git دستور زیر را اجرا کنید: $ git statusشما دستور بالا را اغلب مرتباً اجرا می کنید. این همان کاری است که با یک مدیر بانک تماس بگیرید تا بررسی کند وضعیت صندوق امانات شما چطور است. در حال حاضر ، Git خروجی زیر را به شما می دهد:$ git statusOn branch masterInitial commitnothing to commit (create/copy files and use &quot;git add&quot; to track)ادامه دارد ...منبع: RubyGarage</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Tue, 02 Mar 2021 12:05:30 +0330</pubDate>
            </item>
                    <item>
                <title>دریافت ایمیج های داکر در اوبونتو با کمک docker.ir</title>
                <link>https://virgool.io/LivingWithData/%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA-%D8%A7%DB%8C%D9%85%DB%8C%D8%AC-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%DA%A9%D8%B1-%D8%AF%D8%B1-%D8%A7%D9%88%D8%A8%D9%88%D9%86%D8%AA%D9%88-%D8%A8%D8%A7-%DA%A9%D9%85%DA%A9-dockerir-q8fpqkixrlcq</link>
                <description>حتما شما هم با مشکل نصب یا دریافت ایمیج از docker برخورده اید.  همانطور که می دانید ما عموما در شرایط تحریم زندگی می کنیم و برای انجام  کارها مجبوریم روش های دور زدن تحریم را فرا بگیریم!اگر برنامه نویس باشید، قطعا حداقل یک بار نام داکر (docker)  به گوش شما خورده است. داکر نوعی سیستم مجازی سازی است که ایمیج های  (image) آماده ای دارد که برای کارهای مختلف از راه اندازی وردپرس (wordpress) تا داده کاوی (Data Mining) کاربرد دارند. مشکل اصل جایی شروع می شود که داکر یک محصول آمریکایی است و ما هم مشمول تحریم هستیم!شرکت پارس پک با ایجاد سایت docker.ir به شما اجازه می دهد تا این تحریم  ها رو دور زده و ایمیج مد نظر خود را از کتابخانه (docker pull) داکر نصب  کنید.اگر وارد سایت  شوید می توانید docker.ir شوید، می توانید راهنمای تنظیمات مد نظر خود را بیابید. نصب داکر به راحتی  انجام می گیرد. در این خصوص من مشکلی با IP ایران نداشتم!!حال برای انجام تنظیمات دریافت ایمیج های داکر به ترتیب موارد زیر را انجام دهید:mkdir -p /etc/systemd/system/docker.service.dسپس باید وارد این مسیر شوید و فایل جدید با عنوان http-proxy.conf را ایجاد کنید:touch http-proxy.confسپس برای ویرایش فایل از دستور زیر استفاده می کنیمnano http-proxy.confسپس مقدار زیر را در آن کپی می کنیم:[Service]
Environment=&amp;quotHTTP_PROXY=http://Proxy.Docker.ir:5555&amp;quotحالا تنها باید داکر را متوقف و مجددا اجرا نمایید:systemctl daemon-reload
systemctl restart dockerاکنون به راحتی می توانید با دستور زیر جدیدترین ایمیج ها را از داکر دانلود کنید:sudo docker pull [your image name]موفق باشید!</description>
                <category>یاشار</category>
                <author>یاشار</author>
                <pubDate>Tue, 17 Dec 2019 15:36:18 +0330</pubDate>
            </item>
            </channel>
</rss>