Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
ÇözüldüGoogle E-Tablolar'da yatay tablo dikey formata nasıl dönüştürülür?
The official home of the Python Programming Language
www.python.org
Ardından kurarken görselde kırmızı kutudaki işaretlemeyi yapmayı unutmayın ve "Install Now" deyin.
Kurulumdan emin olmak için CMD'yi açıp python --version yazarak sürümü de kontrol edebilirsiniz.
Ardından CMD'de, Python kodumuzun çalışması için gerekli bağımlılıkları indirip kuracak komutu girin ve Enter'a basın.
Bash:
pip install streamlit pandas openpyxl xlsxwriter
Ardından hepsi kurulduğunda aşağıdaki dosyayı bir klasöre kaydedin, örneğin Masaüstü'ne. Dosya uzantısının sonu .py olmalı.
Python:
import streamlit as st
import pandas as pd
import io
st.set_page_config(page_title="Geniş Tabloyu Uzun Tabloya Dönüştürücü", layout="wide")
st.title("Excel Tablo Dönüştürme Aracı (Unpivot)")
st.info("""
Bu araç, her satırda birden fazla öğrenci/kayıt bilgisi içeren geniş Excel tablolarını,
her satırda tek bir kayıt olacak şekilde uzun ve düzenli bir formata dönüştürür.
""")
uploaded_file = st.file_uploader(
"Lütfen dönüştürmek istediğiniz Excel (.xlsx) dosyasını buraya yükleyin",
type="xlsx"
)
if uploaded_file is not None:
try:
df_original = pd.read_excel(uploaded_file, dtype=str) # Tüm veriyi metin olarak oku, numara formatını koru
st.subheader("1. Orjinal Veri Önizlemesi")
st.dataframe(df_original.head())
st.subheader("2. Sabit Kalacak Sütun(ları) Seçin")
st.write("Bu sütunlar dönüştürme işleminden etkilenmeyecek ve her satırda tekrar edecektir. (Örn: 'grup adı')")
id_columns = st.multiselect(
"Sabit kalacak sütunları seçin:",
options=df_original.columns.tolist(),
default=df_original.columns.tolist()[0] if not df_original.columns.empty else None
)
if not id_columns:
st.warning("Lütfen sabit kalacak en az bir sütun seçin.")
else:
value_columns = [col for col in df_original.columns if col not in id_columns]
st.subheader("3. Tabloyu Dönüştür")
if st.button("Dönüştür ve Sonucu Göster"):
df_melted = pd.melt(
df_original,
id_vars=id_columns,
value_vars=value_columns,
var_name="Bilgi Türü",
value_name="Değer"
)
df_melted.dropna(subset=['Değer'], inplace=True)
df_melted = df_melted[df_melted['Değer'] != '']
# --- ADIM 2: BİLGİ AYRIŞTIRMA VE PIVOT ---
# <<< DEĞİŞİKLİK BURADA BAŞLIYOR >>>
# 'Bilgi Türü' sütununu 'Öğrenci Sırası' ve 'Özellik' olarak ikiye ayır.
# Örnek: "1. Öğrenci No" -> ["1.", "Öğrenci No"]
df_melted[['Öğrenci Sırası', 'Özellik']] = df_melted['Bilgi Türü'].str.split(n=1, expand=True)
# Artık "Bilgi Türü" sütununa ihtiyacımız yok, onu atabiliriz
df_melted = df_melted.drop(columns=['Bilgi Türü'])
# Pivot işlemi: Her öğrencinin bilgilerini tek satırda birleştir.
# İndeks olarak grup adı ve öğrenci sırasını kullan. 'Özellik' sütunundaki değerleri yeni sütun başlıkları yap.
df_final = df_melted.pivot(
index=id_columns + ['Öğrenci Sırası'],
columns='Özellik',
values='Değer'
).reset_index()
# Pivot işleminden sonra oluşan sütun adı indexini temizle
df_final.columns.name = None
# Gereksiz sütunları (Öğrenci Sırası gibi) kaldırabilir ve sütunları yeniden sıralayabiliriz.
# Orjinal tablodaki sütun başlıklarına benzemesi için düzenleme
desired_columns_order = [
'grup adı', '1. Öğrenci', '1. Öğrenci No', '1. Öğrenci Tel'
]
# Pivot sonucunda oluşan başlıkları ("Öğrenci", "Öğrenci No") alalım
final_columns = id_columns + list(df_final.columns[len(id_columns)+1:])
# Sütunları istediğimiz gibi yeniden isimlendirelim (Örn: "Öğrenci" -> "Öğrenci Adı")
df_final = df_final.rename(columns={"Öğrenci": "Öğrenci Adı"})
# <<< DEĞİŞİKLİK BURADA BİTİYOR >>>
st.success("Dönüştürme işlemi başarıyla tamamlandı!")
st.subheader("Dönüştürülmüş Veri (Nihai Sonuç)")
st.dataframe(df_final)
st.subheader("4. Dönüştürülmüş Dosyayı İndir")
output = io.BytesIO()
with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
df_final.to_excel(writer, index=False, sheet_name='Donusturulmus_Veri')
st.download_button(
label="(.xlsx) Olarak İndir",
data=output.getvalue(),
file_name='donusturulmus_tablo.xlsx',
mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
except Exception as e:
st.error(f"Bir hata oluştu: {e}")
Ardından, dosyayı kaydettiğiniz yeri Dosya Gezgini'nde açın, yukarıdaki adres çubuğuna cmd yazıp Enter'a basın. Bu sayede CMD'yi kod dosyasının olduğu yerde açmış olursunuz. ("dosya_adi" yazan yere kendi dosyanızın adını yazmayı unutmayın.
Bash:
streamlit run dosya_adi.py
Araç, tarayıcınızda otomatik olarak açılacak. Şimdi Google Sheets'ten indirdiğiniz XLSX dosyasını buraya yükleyip istediğinizi yapabilirsiniz.
Aklınıza takılan bir yer olursa sormaktan çekinmeyin.
Ayrıca şuna dikkat edebilirsiniz, yeni dosyayı direkt eski Google E-Tablo'nuz üzerine yazmayın ki bir sorun, istenmeyen bir durum yaşanırsa geri dönebilesiniz.
Yapmak istediğinizi tam olarak anlayamadım. Başlıkta yazana göre satırlarda yazan "X Grubu" yazıları sütunlara geçecek. Öğrenci, Öğrenci Tel gibi sütunlar da satırlara geçecek. Ama konuda yazana göre de kafam karıştı. Rica etsem tam istediğinizi anlatır mısınız?
Google Formlar'dan toplanan büyük bir veri tablosu var. Bu tabloda her grup için 5'e kadar öğrenci bilgisi (Ad, No, Tel) yan yana, yatay sütunlarda tekrar ediyor. Bu yatay ve dağınık yapıyı, her öğrencinin kendi başına bir satır olduğu düzenli ve dikey bir tabloya dönüştürmek istiyor. Bu işi elle yapmak çok uzun süreceği için, Google E-Tablolar'da çalışacak tek bir formüle ihtiyacı var.
Yapmak istediğinizi tam olarak anlayamadım. Başlıkta yazana göre satırlarda yazan "X Grubu" yazıları sütunlara geçecek. Öğrenci, Öğrenci Tel gibi sütunlar da satırlara geçecek. Ama konuda yazana göre de kafam karıştı. Rica etsem tam istediğinizi anlatır mısınız?
Evet bu ama veriler gerçek kişilerin verileri olduğu için 3. taraf bir yazılım kullanmak olumsuz sonuçlar doğurabilir. Bu nedenle formül istiyorum.
Yine de ilgi ve alakanız için teşekkürler.
Evet bu ama veriler gerçek kişilerin verileri olduğu için 3. taraf bir yazılım kullanmak olumsuz sonuçlar doğurabilir. Bu nedenle formül istiyorum.
Yine de ilgi ve alakanız için teşekkürler.
3. taraf bir yazılım değil Python kodu kullandım. Kodları direkt olarak size verebilirim, tek dosya kod. Yapay zekaya yaptırdım. Hatta siz de kodu istediğiniz yapay zekaya atıp istediğiniz gibi incelemesini isteyebilirsiniz. Bilgisayarınızda lokal olarak çalışır, dışarıya veri göndermez. Hatta Python ve gerekli bağımlılıkları kurduktan sonra interneti kapatıp, işinizi görüp, kodu internete henüz bağlanmadan silebilirsiniz.
3. taraf bir yazılım değil Python kodu kullandım. Kodları direkt olarak size verebilirim, tek dosya kod. Yapay zekaya yaptırdım. Hatta siz de kodu istediğiniz yapay zekaya atıp istediğiniz gibi incelemesini isteyebilirsiniz. Bilgisayarınızda lokal olarak çalışır, dışarıya veri göndermez. Hatta Python ve gerekli bağımlılıkları kurduktan sonra interneti kapatıp, işinizi görüp, kodu internete henüz bağlanmadan silebilirsiniz.
The official home of the Python Programming Language
www.python.org
Ardından kurarken görselde kırmızı kutudaki işaretlemeyi yapmayı unutmayın ve "Install Now" deyin.
Kurulumdan emin olmak için CMD'yi açıp python --version yazarak sürümü de kontrol edebilirsiniz.
Ardından CMD'de, Python kodumuzun çalışması için gerekli bağımlılıkları indirip kuracak komutu girin ve Enter'a basın.
Bash:
pip install streamlit pandas openpyxl xlsxwriter
Ardından hepsi kurulduğunda aşağıdaki dosyayı bir klasöre kaydedin, örneğin Masaüstü'ne. Dosya uzantısının sonu .py olmalı.
Python:
import streamlit as st
import pandas as pd
import io
st.set_page_config(page_title="Geniş Tabloyu Uzun Tabloya Dönüştürücü", layout="wide")
st.title("Excel Tablo Dönüştürme Aracı (Unpivot)")
st.info("""
Bu araç, her satırda birden fazla öğrenci/kayıt bilgisi içeren geniş Excel tablolarını,
her satırda tek bir kayıt olacak şekilde uzun ve düzenli bir formata dönüştürür.
""")
uploaded_file = st.file_uploader(
"Lütfen dönüştürmek istediğiniz Excel (.xlsx) dosyasını buraya yükleyin",
type="xlsx"
)
if uploaded_file is not None:
try:
df_original = pd.read_excel(uploaded_file, dtype=str) # Tüm veriyi metin olarak oku, numara formatını koru
st.subheader("1. Orjinal Veri Önizlemesi")
st.dataframe(df_original.head())
st.subheader("2. Sabit Kalacak Sütun(ları) Seçin")
st.write("Bu sütunlar dönüştürme işleminden etkilenmeyecek ve her satırda tekrar edecektir. (Örn: 'grup adı')")
id_columns = st.multiselect(
"Sabit kalacak sütunları seçin:",
options=df_original.columns.tolist(),
default=df_original.columns.tolist()[0] if not df_original.columns.empty else None
)
if not id_columns:
st.warning("Lütfen sabit kalacak en az bir sütun seçin.")
else:
value_columns = [col for col in df_original.columns if col not in id_columns]
st.subheader("3. Tabloyu Dönüştür")
if st.button("Dönüştür ve Sonucu Göster"):
df_melted = pd.melt(
df_original,
id_vars=id_columns,
value_vars=value_columns,
var_name="Bilgi Türü",
value_name="Değer"
)
df_melted.dropna(subset=['Değer'], inplace=True)
df_melted = df_melted[df_melted['Değer'] != '']
# --- ADIM 2: BİLGİ AYRIŞTIRMA VE PIVOT ---
# <<< DEĞİŞİKLİK BURADA BAŞLIYOR >>>
# 'Bilgi Türü' sütununu 'Öğrenci Sırası' ve 'Özellik' olarak ikiye ayır.
# Örnek: "1. Öğrenci No" -> ["1.", "Öğrenci No"]
df_melted[['Öğrenci Sırası', 'Özellik']] = df_melted['Bilgi Türü'].str.split(n=1, expand=True)
# Artık "Bilgi Türü" sütununa ihtiyacımız yok, onu atabiliriz
df_melted = df_melted.drop(columns=['Bilgi Türü'])
# Pivot işlemi: Her öğrencinin bilgilerini tek satırda birleştir.
# İndeks olarak grup adı ve öğrenci sırasını kullan. 'Özellik' sütunundaki değerleri yeni sütun başlıkları yap.
df_final = df_melted.pivot(
index=id_columns + ['Öğrenci Sırası'],
columns='Özellik',
values='Değer'
).reset_index()
# Pivot işleminden sonra oluşan sütun adı indexini temizle
df_final.columns.name = None
# Gereksiz sütunları (Öğrenci Sırası gibi) kaldırabilir ve sütunları yeniden sıralayabiliriz.
# Orjinal tablodaki sütun başlıklarına benzemesi için düzenleme
desired_columns_order = [
'grup adı', '1. Öğrenci', '1. Öğrenci No', '1. Öğrenci Tel'
]
# Pivot sonucunda oluşan başlıkları ("Öğrenci", "Öğrenci No") alalım
final_columns = id_columns + list(df_final.columns[len(id_columns)+1:])
# Sütunları istediğimiz gibi yeniden isimlendirelim (Örn: "Öğrenci" -> "Öğrenci Adı")
df_final = df_final.rename(columns={"Öğrenci": "Öğrenci Adı"})
# <<< DEĞİŞİKLİK BURADA BİTİYOR >>>
st.success("Dönüştürme işlemi başarıyla tamamlandı!")
st.subheader("Dönüştürülmüş Veri (Nihai Sonuç)")
st.dataframe(df_final)
st.subheader("4. Dönüştürülmüş Dosyayı İndir")
output = io.BytesIO()
with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
df_final.to_excel(writer, index=False, sheet_name='Donusturulmus_Veri')
st.download_button(
label="(.xlsx) Olarak İndir",
data=output.getvalue(),
file_name='donusturulmus_tablo.xlsx',
mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
except Exception as e:
st.error(f"Bir hata oluştu: {e}")
Ardından, dosyayı kaydettiğiniz yeri Dosya Gezgini'nde açın, yukarıdaki adres çubuğuna cmd yazıp Enter'a basın. Bu sayede CMD'yi kod dosyasının olduğu yerde açmış olursunuz. ("dosya_adi" yazan yere kendi dosyanızın adını yazmayı unutmayın.
Bash:
streamlit run dosya_adi.py
Araç, tarayıcınızda otomatik olarak açılacak. Şimdi Google Sheets'ten indirdiğiniz XLSX dosyasını buraya yükleyip istediğinizi yapabilirsiniz.
Aklınıza takılan bir yer olursa sormaktan çekinmeyin.
Ayrıca şuna dikkat edebilirsiniz, yeni dosyayı direkt eski Google E-Tablo'nuz üzerine yazmayın ki bir sorun, istenmeyen bir durum yaşanırsa geri dönebilesiniz.
Kurulumdan emin olmak için CMD'yi açıp python --version yazarak sürümü de kontrol edebilirsiniz.
Ardından CMD'de, Python kodumuzun çalışması için gerekli bağımlılıkları indirip kuracak komutu girin ve Enter'a basın.
Bash:
pip install streamlit pandas openpyxl xlsxwriter
Ardından hepsi kurulduğunda aşağıdaki dosyayı bir klasöre kaydedin, örneğin masaüstü'ne. Dosya uzantısının sonu .py olmalı.
Python:
import streamlit as st.
import pandas as pd.
import io.
st.set_page_config(page_title="Geniş Tabloyu Uzun Tabloya Dönüştürücü", layout="wide")
st.title("Excel Tablo Dönüştürme Aracı (Unpivot)")
st.info("""
Bu araç, her satırda birden fazla öğrenci/kayıt bilgisi içeren geniş Excel tablolarını,
her satırda tek bir kayıt olacak şekilde uzun ve düzenli bir formata dönüştürür.
""")
uploaded_file = st.file_uploader(
"Lütfen dönüştürmek istediğiniz Excel (.xlsx) dosyasını buraya yükleyin",
type="xlsx"
)
if uploaded_file is not None:
try:
df_original = pd.read_excel(uploaded_file, dtype=str) # Tüm veriyi metin olarak oku, numara formatını koru.
st.subheader("1. Orjinal Veri Önizlemesi")
st.dataframe(df_original.head())
st.subheader("2. Sabit Kalacak Sütun(ları) Seçin")
st.write("Bu sütunlar dönüştürme işleminden etkilenmeyecek ve her satırda tekrar edecektir. (Örn: 'grup adı')")
id_columns = st.multiselect(
"Sabit kalacak sütunları seçin:",
options=df_original.columns.tolist(),
default=df_original.columns.tolist()[0] if not df_original.columns.empty else None.
)
if not id_columns:
st.warning("Lütfen sabit kalacak en az bir sütun seçin.")
else:
value_columns = [col for col in df_original.columns if col not in id_columns]
st.subheader("3. Tabloyu Dönüştür")
if st.button("Dönüştür ve Sonucu Göster"):
df_melted = pd.melt(
df_original,
id_vars=id_columns,
value_vars=value_columns,
var_name="Bilgi Türü",
value_name="Değer"
)
df_melted.dropna(subset=['Değer'], inplace=True)
df_melted = df_melted[df_melted['Değer'] != '']
# --- ADIM 2: BİLGİ AYRIŞTIRMA VE PIVOT ---
# <<< DEĞİŞİKLİK BURADA BAŞLIYOR >>>
# 'Bilgi Türü' sütununu 'Öğrenci Sırası' ve 'Özellik' olarak ikiye ayır.
# Örnek: "1. Öğrenci No" -> ["1.", "Öğrenci No"]
df_melted[['Öğrenci Sırası', 'Özellik']] = df_melted['Bilgi Türü'].str.split(n=1, expand=True)
# Artık "Bilgi Türü" sütununa ihtiyacımız yok, onu atabiliriz.
df_melted = df_melted.drop(columns=['Bilgi Türü'])
# Pivot işlemi: Her öğrencinin bilgilerini tek satırda birleştir.
# İndeks olarak grup adı ve öğrenci sırasını kullan. 'Özellik' sütunundaki değerleri yeni sütun başlıkları yap.
df_final = df_melted.pivot(
index=id_columns + ['Öğrenci Sırası'],
columns='Özellik',
values='Değer'
).reset_index()
# Pivot işleminden sonra oluşan sütun adı indexini temizle.
df_final.columns.name = None.
# Gereksiz sütunları (Öğrenci Sırası gibi) kaldırabilir ve sütunları yeniden sıralayabiliriz.
# Orjinal tablodaki sütun başlıklarına benzemesi için düzenleme.
desired_columns_order = [
'grup adı', '1. Öğrenci', '1. Öğrenci No', '1. Öğrenci Tel'.
]
# Pivot sonucunda oluşan başlıkları ("Öğrenci", "Öğrenci No") alalım.
final_columns = id_columns + list(df_final.columns[len(id_columns)+1:])
# Sütunları istediğimiz gibi yeniden isimlendirelim (Örn: "Öğrenci" -> "Öğrenci Adı")
df_final = df_final.rename(columns={"Öğrenci": "Öğrenci Adı"})
# <<< DEĞİŞİKLİK BURADA BİTİYOR >>>
st.success("Dönüştürme işlemi başarıyla tamamlandı!")
st.subheader("Dönüştürülmüş Veri (Nihai Sonuç)")
st.dataframe(df_final)
st.subheader("4. Dönüştürülmüş Dosyayı İndir")
output = io.BytesIO()
with pd.ExcelWriter(output, engine='xlsxwriter') as writer:
df_final.to_excel(writer, index=False, sheet_name='Donusturulmus_Veri')
st.download_button(
label="(.xlsx) Olarak İndir",
data=output.getvalue(),
file_name='donusturulmus_tablo.xlsx',
mime='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
except Exception as e:
st.error(f"Bir hata oluştu: {e}")
Ardından, dosyayı kaydettiğiniz yeri Dosya Gezgini'nde açın, yukarıdaki adres çubuğuna CMD yazıp Enter'a basın. Bu sayede CMD'yi kod dosyasının olduğu yerde açmış olursunuz. ("dosya_adi" yazan yere kendi dosyanızın adını yazmayı unutmayın.
Araç, tarayıcınızda otomatik olarak açılacak. Şimdi Google sheets'ten indirdiğiniz xlsx dosyasını buraya yükleyip istediğinizi yapabilirsiniz.
Aklınıza takılan bir yer olursa sormaktan çekinmeyin.
Ayrıca şuna dikkat edebilirsiniz, yeni dosyayı direkt eski Google e-tablo'nuz üzerine yazmayın ki bir sorun, istenmeyen bir durum yaşanırsa geri dönebilesiniz.
Çok teşekkür ederim, gerçekten çok açıklayıcı ve özenli bir anlatım olmuş. Görsellerle birlikte adım adım ilerlemek işi oldukça kolaylaştırıyor. Bu konularda az çok deneyimim var ama yine de bu kadar sade ve sistemli bir rehber hazırlamak herkesin aklına gelmezdi.
Emeğiniz ve detaylı açıklamanız için tekrar teşekkür ederim.
Çok teşekkür ederim, gerçekten çok açıklayıcı ve özenli bir anlatım olmuş. Görsellerle birlikte adım adım ilerlemek işi oldukça kolaylaştırıyor. Bu konularda az çok deneyimim var ama yine de bu kadar sade ve sistemli bir rehber hazırlamak herkesin aklına gelmezdi.
Emeğiniz ve detaylı açıklamanız için tekrar teşekkür ederim.